#[derive(Clone, Debug, Default, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize))]
pub struct ShipUpgradeSelection {
pub hull: Option<String>,
pub engine: Option<String>,
pub artillery: Option<String>,
pub torpedoes: Option<String>,
pub fire_control: Option<String>,
}
impl ShipUpgradeSelection {
pub fn stock(ship: &crate::game_params::types::Param) -> ShipUpgradeSelection {
ship.vehicle().and_then(|v| v.ttx_components()).map(|c| c.stock_selection().clone()).unwrap_or_default()
}
pub fn new(
hull: Option<String>,
engine: Option<String>,
artillery: Option<String>,
torpedoes: Option<String>,
fire_control: Option<String>,
) -> ShipUpgradeSelection {
ShipUpgradeSelection { hull, engine, artillery, torpedoes, fire_control }
}
}