35 lines
1.1 KiB
Rust
35 lines
1.1 KiB
Rust
//! 战斗领域事件。
|
|
//!
|
|
//! 用于表达战斗胜利、切磋完成、奖励待发放和战斗被终止等事实。
|
|
|
|
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,
|
|
}
|