use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
pub struct JunkReward {
pub name: String,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
pub struct ItemReward {
pub name: String,
pub qty: u32,
pub total_weight: f32,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(tag = "item_type", content = "reward")]
pub enum Reward {
#[serde(rename = "junk")]
Junk(JunkReward),
#[serde(rename = "trade_item")]
TradeItem(ItemReward),
#[serde(rename = "treasure")]
Treasure(ItemReward),
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub enum EncounterResult {
Failure {
failure_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
severity: Option<String>,
},
RewardSpec {
item_types: Vec<String>,
},
Reward {
items: Vec<Reward>,
},
}