197 lines
6.2 KiB
Rust
197 lines
6.2 KiB
Rust
//! 大鱼吃小鱼写入命令。
|
|
//!
|
|
//! 用于表达创建会话、写入消息、更新资产槽和推进运行态等输入。
|
|
|
|
use crate::domain::*;
|
|
use serde::{Deserialize, Serialize};
|
|
#[cfg(feature = "spacetime-types")]
|
|
use spacetimedb::SpacetimeType;
|
|
|
|
/// 评估作品是否可以发布的纯领域命令。
|
|
///
|
|
/// adapter 负责把 SpacetimeDB row 或 HTTP DTO 映射成这里的输入;
|
|
/// 命令本身只关心草稿与资产槽这些领域事实。
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct EvaluateBigFishPublishReadinessCommand {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub draft: Option<BigFishGameDraft>,
|
|
pub evaluated_at_micros: i64,
|
|
}
|
|
|
|
/// 开始一局 Big Fish 运行态的纯领域命令。
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StartBigFishRunCommand {
|
|
pub run_id: String,
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub draft: Option<BigFishGameDraft>,
|
|
pub work_level_count: Option<u32>,
|
|
pub started_at_micros: i64,
|
|
}
|
|
|
|
/// 提交方向输入并推进一帧的纯领域命令。
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct SubmitBigFishInputCommand {
|
|
pub owner_user_id: String,
|
|
pub x: f32,
|
|
pub y: f32,
|
|
pub submitted_at_micros: i64,
|
|
pub current_snapshot: BigFishRuntimeSnapshot,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishWorksListInput {
|
|
pub owner_user_id: String,
|
|
pub published_only: bool,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishWorkDeleteInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishWorkRemixInput {
|
|
pub source_session_id: String,
|
|
pub target_session_id: String,
|
|
pub target_owner_user_id: String,
|
|
pub welcome_message_id: String,
|
|
pub remixed_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishWorksProcedureResult {
|
|
pub ok: bool,
|
|
pub items: Vec<BigFishWorkSummarySnapshot>,
|
|
pub error_message: Option<String>,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishSessionCreateInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub seed_text: String,
|
|
pub welcome_message_id: String,
|
|
pub welcome_message_text: String,
|
|
pub created_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishSessionGetInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishMessageSubmitInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub user_message_id: String,
|
|
pub user_message_text: String,
|
|
pub assistant_message_id: String,
|
|
pub submitted_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishMessageFinalizeInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub assistant_message_id: Option<String>,
|
|
pub assistant_reply_text: Option<String>,
|
|
pub stage: BigFishCreationStage,
|
|
pub progress_percent: u32,
|
|
pub anchor_pack_json: String,
|
|
pub error_message: Option<String>,
|
|
pub updated_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishDraftCompileInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub draft_json: Option<String>,
|
|
pub compiled_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishAssetGenerateInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub asset_kind: BigFishAssetKind,
|
|
pub level: Option<u32>,
|
|
pub motion_key: Option<String>,
|
|
pub asset_url: Option<String>,
|
|
pub generated_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishPublishInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub published_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishPlayRecordInput {
|
|
pub session_id: String,
|
|
pub user_id: String,
|
|
pub elapsed_ms: u64,
|
|
pub played_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishWorkLikeRecordInput {
|
|
pub session_id: String,
|
|
pub user_id: String,
|
|
pub liked_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishRunStartInput {
|
|
pub run_id: String,
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub started_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct BigFishRunGetInput {
|
|
pub run_id: String,
|
|
pub owner_user_id: String,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
|
pub struct BigFishInputSubmitInput {
|
|
pub run_id: String,
|
|
pub owner_user_id: String,
|
|
pub x: f32,
|
|
pub y: f32,
|
|
pub submitted_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
|
pub struct BigFishRunProcedureResult {
|
|
pub ok: bool,
|
|
pub run: Option<BigFishRuntimeSnapshot>,
|
|
pub error_message: Option<String>,
|
|
}
|