//! NPC 写入命令。 //! //! 用于表达聊天、帮助、送礼、招募、开战和切磋等输入。 use crate::domain::{NpcSocialActionKind, NpcStanceProfile}; use serde::{Deserialize, Serialize}; #[cfg(feature = "spacetime-types")] use spacetimedb::SpacetimeType; #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct NpcStateUpsertInput { pub runtime_session_id: String, pub npc_id: String, pub npc_name: String, pub affinity: i32, pub help_used: bool, pub chatted_count: u32, pub gifts_given: u32, pub recruited: bool, pub trade_stock_signature: Option, pub revealed_facts: Vec, pub known_attribute_rumors: Vec, pub first_meaningful_contact_resolved: bool, pub seen_backstory_chapter_ids: Vec, pub stance_profile: Option, pub updated_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct ResolveNpcSocialActionInput { pub runtime_session_id: String, pub npc_id: String, pub npc_name: String, pub action_kind: NpcSocialActionKind, pub affinity_gain_override: Option, pub note: Option, pub updated_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct ResolveNpcInteractionInput { pub runtime_session_id: String, pub npc_id: String, pub npc_name: String, pub interaction_function_id: String, pub release_npc_id: Option, pub updated_at_micros: i64, }