use serde::Deserialize; use crate::pb_components::action::Action; use crate::pb_components::common::Point; use crate::pb_components::flow::Flow; use crate::pb_components::option::GameOption; #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase")] pub struct MatchRoleOption { pub r#type: String, pub id: Option, } #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase")] pub struct SectorRange { pub begin: Option, pub end: Option, } #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase")] pub struct RandomInteract { pub random_count: Option, #[cfg(feature = "strict_json_fields")] pub options: Option, // TODO } #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase")] pub struct Npc {} #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase")] pub struct LeisureInteraction { pub begin: i32, pub end: i32, } #[derive(Deserialize, Debug, Clone)] #[serde(tag = "Type")] pub enum SectorRangeFromPlayerToEntity { Npc(Npc), LeisureInteraction(LeisureInteraction), } #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase")] pub struct Actions { pub actions: Vec, } #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase")] pub struct Flows { pub flow: Flow, } #[derive(Deserialize, Debug, Clone)] #[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))] #[serde(rename_all = "PascalCase")] pub struct InteractComponent { pub disabled: Option, pub pre_flow: Option, pub do_intact_type: Option, pub options: Option>, pub match_role_option: Option>, pub range: Option, pub is_wait_for_turn_around_complete: Option, pub turn_around_type: Option, pub interact_default_icon: Option, pub tid_content: Option, pub interact_point_offset: Option, pub sector_range: Option, pub random_interact: Option, pub sector_range_from_player_to_entity: Option, pub interact_icon: Option, pub quest_ids: Option>, pub exit_range: Option, }