Files
Genarrative/server-rs/crates/module-runtime-item/src/errors.rs

63 lines
2.5 KiB
Rust

//! 运行时物品领域错误。
//!
//! 错误只表达物品/奇遇规则失败,例如 encounter 缺失或奖励字段非法。
use std::{error::Error, fmt};
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum TreasureFieldError {
MissingTreasureRecordId,
MissingRuntimeSessionId,
MissingStorySessionId,
MissingActorUserId,
MissingEncounterId,
MissingEncounterName,
MissingRewardItemId,
MissingRewardItemCategory,
MissingRewardItemName,
InvalidRewardItemQuantity,
MissingRewardItemStackKey,
RewardEquipmentItemCannotStack,
RewardNonStackableItemMustStaySingleQuantity,
}
impl fmt::Display for TreasureFieldError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::MissingTreasureRecordId => {
f.write_str("treasure_record.treasure_record_id 不能为空")
}
Self::MissingRuntimeSessionId => {
f.write_str("treasure_record.runtime_session_id 不能为空")
}
Self::MissingStorySessionId => f.write_str("treasure_record.story_session_id 不能为空"),
Self::MissingActorUserId => f.write_str("treasure_record.actor_user_id 不能为空"),
Self::MissingEncounterId => f.write_str("treasure_record.encounter_id 不能为空"),
Self::MissingEncounterName => f.write_str("treasure_record.encounter_name 不能为空"),
Self::MissingRewardItemId => {
f.write_str("treasure_record.reward_items[].item_id 不能为空")
}
Self::MissingRewardItemCategory => {
f.write_str("treasure_record.reward_items[].category 不能为空")
}
Self::MissingRewardItemName => {
f.write_str("treasure_record.reward_items[].item_name 不能为空")
}
Self::InvalidRewardItemQuantity => {
f.write_str("treasure_record.reward_items[].quantity 必须大于 0")
}
Self::MissingRewardItemStackKey => {
f.write_str("treasure_record.reward_items[].stack_key 不能为空")
}
Self::RewardEquipmentItemCannotStack => {
f.write_str("treasure_record.reward_items[] 可装备物品不能标记为 stackable")
}
Self::RewardNonStackableItemMustStaySingleQuantity => {
f.write_str("treasure_record.reward_items[] 不可堆叠物品必须固定为单槽位单数量")
}
}
}
}
impl Error for TreasureFieldError {}