microversus_codex 0.1.6

Types and definitions for interfacing with the microversus system
Documentation
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,
}

/* runtime types */

#[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>,
    },
}