use super::die::FaceValue;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TraySlot {
pub die_name: String,
pub slot_id: u32,
pub locked: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub current_value: Option<FaceValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Tray {
pub name: String,
#[serde(default)]
pub slots: Vec<TraySlot>,
#[serde(default = "default_next_slot_id")]
pub next_slot_id: u32,
}
fn default_next_slot_id() -> u32 {
1
}
impl Tray {
pub fn new(name: String) -> Self {
Self {
name,
slots: Vec::new(),
next_slot_id: 1,
}
}
}