72 lines
2.1 KiB
Rust
72 lines
2.1 KiB
Rust
//! 运行时物品领域模型。
|
|
//!
|
|
//! 本文件承载宝箱、奇遇和奖励物品的稳定值对象;背包落库由外层事务 adapter 编排。
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
#[cfg(feature = "spacetime-types")]
|
|
use spacetimedb::SpacetimeType;
|
|
|
|
pub const TREASURE_RECORD_ID_PREFIX: &str = "treasure_";
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub enum TreasureInteractionAction {
|
|
Inspect,
|
|
Leave,
|
|
Secure,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct RuntimeItemRewardItemSnapshot {
|
|
pub item_id: String,
|
|
pub category: String,
|
|
pub item_name: String,
|
|
pub description: Option<String>,
|
|
pub quantity: u32,
|
|
pub rarity: RuntimeItemRewardItemRarity,
|
|
pub tags: Vec<String>,
|
|
pub stackable: bool,
|
|
pub stack_key: String,
|
|
pub equipment_slot_id: Option<RuntimeItemEquipmentSlot>,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub enum RuntimeItemRewardItemRarity {
|
|
Common,
|
|
Uncommon,
|
|
Rare,
|
|
Epic,
|
|
Legendary,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub enum RuntimeItemEquipmentSlot {
|
|
Weapon,
|
|
Armor,
|
|
Relic,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct TreasureRecordSnapshot {
|
|
pub treasure_record_id: String,
|
|
pub runtime_session_id: String,
|
|
pub story_session_id: String,
|
|
pub actor_user_id: String,
|
|
pub encounter_id: String,
|
|
pub encounter_name: String,
|
|
pub scene_id: Option<String>,
|
|
pub scene_name: Option<String>,
|
|
pub action: TreasureInteractionAction,
|
|
pub reward_items: Vec<RuntimeItemRewardItemSnapshot>,
|
|
pub reward_hp: u32,
|
|
pub reward_mana: u32,
|
|
pub reward_currency: u32,
|
|
pub story_hint: Option<String>,
|
|
pub created_at_micros: i64,
|
|
pub updated_at_micros: i64,
|
|
}
|