//! 背包领域事件。 //! //! 用于表达物品获得、物品消耗、装备变化和槽位投影变化等事实。 use crate::domain::InventoryEquipmentSlot; 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 enum InventoryDomainEvent { ItemGranted(InventoryItemGrantedEvent), ItemConsumed(InventoryItemConsumedEvent), EquipmentChanged(InventoryEquipmentChangedEvent), } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct InventoryItemGrantedEvent { pub slot_id: String, pub runtime_session_id: String, pub actor_user_id: String, pub occurred_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct InventoryItemConsumedEvent { pub slot_id: String, pub quantity: u32, pub occurred_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct InventoryEquipmentChangedEvent { pub slot_id: String, pub equipment_slot: InventoryEquipmentSlot, pub occurred_at_micros: i64, }