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

41 lines
1.3 KiB
Rust

//! 任务领域事件。
//!
//! 用于表达任务接受、推进、完成确认和交付等事实。
use crate::domain::{QuestLogEventKind, QuestSignalKind};
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 QuestDomainEvent {
QuestAccepted(QuestAcceptedEvent),
QuestProgressed(QuestProgressedEvent),
QuestLogRecorded(QuestLogRecordedEvent),
}
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct QuestAcceptedEvent {
pub quest_id: String,
pub occurred_at_micros: i64,
}
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct QuestProgressedEvent {
pub quest_id: String,
pub signal_kind: QuestSignalKind,
pub changed_step_id: Option<String>,
pub occurred_at_micros: i64,
}
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct QuestLogRecordedEvent {
pub quest_id: String,
pub event_kind: QuestLogEventKind,
pub occurred_at_micros: i64,
}