wicked-waifus-rs/wicked-waifus-data/src/pb_components/interact.rs
xavo95 ab868a158a 2.2.2 (#3)
Ongoing changes for 2.2.2

Reviewed-on: WutheringSlaves/wicked-waifus-rs#3
2025-03-09 09:10:08 +00:00

87 lines
No EOL
2.7 KiB
Rust

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<i32>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(feature = "strict_json_fields", serde(deny_unknown_fields))]
#[serde(rename_all = "PascalCase")]
pub struct SectorRange {
pub begin: Option<f32>,
pub end: Option<f32>,
}
#[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<i32>,
#[cfg(feature = "strict_json_fields")]
pub options: Option<serde_json::Value>, // 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<Action>,
}
#[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<bool>,
pub pre_flow: Option<Flow>,
pub do_intact_type: Option<String>,
pub options: Option<Vec<GameOption>>,
pub match_role_option: Option<Vec<MatchRoleOption>>,
pub range: Option<i32>,
pub is_wait_for_turn_around_complete: Option<bool>,
pub turn_around_type: Option<String>,
pub interact_default_icon: Option<String>,
pub tid_content: Option<String>,
pub interact_point_offset: Option<Point>,
pub sector_range: Option<SectorRange>,
pub random_interact: Option<RandomInteract>,
pub sector_range_from_player_to_entity: Option<SectorRangeFromPlayerToEntity>,
pub interact_icon: Option<String>,
pub quest_ids: Option<Vec<i32>>,
pub exit_range: Option<i32>,
}