//! 战斗领域事件。 //! //! 用于表达战斗胜利、切磋完成、奖励待发放和战斗被终止等事实。 use crate::domain::CombatOutcome; 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 CombatDomainEvent { BattleActionResolved(CombatBattleActionResolvedEvent), BattleRewardPending(CombatBattleRewardPendingEvent), } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct CombatBattleActionResolvedEvent { pub battle_state_id: String, pub outcome: CombatOutcome, pub damage_dealt: i32, pub damage_taken: i32, pub occurred_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct CombatBattleRewardPendingEvent { pub battle_state_id: String, pub actor_user_id: String, pub experience_reward: u32, pub occurred_at_micros: i64, }