//! 运行时物品领域模型。 //! //! 本文件承载宝箱、奇遇和奖励物品的稳定值对象;背包落库由外层事务 adapter 编排。 use serde::{Deserialize, Serialize}; #[cfg(feature = "spacetime-types")] use spacetimedb::SpacetimeType; pub const TREASURE_RECORD_ID_PREFIX: &str = "treasure_"; #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum TreasureInteractionAction { Inspect, Leave, Secure, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct RuntimeItemRewardItemSnapshot { pub item_id: String, pub category: String, pub item_name: String, pub description: Option, pub quantity: u32, pub rarity: RuntimeItemRewardItemRarity, pub tags: Vec, pub stackable: bool, pub stack_key: String, pub equipment_slot_id: Option, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum RuntimeItemRewardItemRarity { Common, Uncommon, Rare, Epic, Legendary, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum RuntimeItemEquipmentSlot { Weapon, Armor, Relic, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct TreasureRecordSnapshot { pub treasure_record_id: String, pub runtime_session_id: String, pub story_session_id: String, pub actor_user_id: String, pub encounter_id: String, pub encounter_name: String, pub scene_id: Option, pub scene_name: Option, pub action: TreasureInteractionAction, pub reward_items: Vec, pub reward_hp: u32, pub reward_mana: u32, pub reward_currency: u32, pub story_hint: Option, pub created_at_micros: i64, pub updated_at_micros: i64, }