Files
Genarrative/server-rs/crates/module-inventory/src/events.rs

42 lines
1.4 KiB
Rust

//! 背包领域事件。
//!
//! 用于表达物品获得、物品消耗、装备变化和槽位投影变化等事实。
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,
}