space_traders/models/
ship_mount.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
9pub struct ShipMount {
10 #[serde(rename = "symbol")]
12 pub symbol: Symbol,
13 #[serde(rename = "name")]
15 pub name: String,
16 #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
18 pub description: Option<String>,
19 #[serde(rename = "strength", skip_serializing_if = "Option::is_none")]
21 pub strength: Option<u32>,
22 #[serde(rename = "deposits", skip_serializing_if = "Option::is_none")]
24 pub deposits: Option<Vec<Deposits>>,
25 #[serde(rename = "requirements")]
26 pub requirements: crate::models::ShipRequirements,
27}
28
29impl ShipMount {
30 #[allow(clippy::too_many_arguments)]
32 pub fn new(
33 symbol: Symbol,
34 name: String,
35 requirements: crate::models::ShipRequirements,
36 ) -> ShipMount {
37 ShipMount {
38 symbol,
39 name,
40 description: None,
41 strength: None,
42 deposits: None,
43 requirements,
44 }
45 }
46}
47
48#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
50pub enum Symbol {
51 #[serde(rename = "MOUNT_GAS_SIPHON_I")]
52 GasSiphonI,
53 #[serde(rename = "MOUNT_GAS_SIPHON_II")]
54 GasSiphonIi,
55 #[serde(rename = "MOUNT_GAS_SIPHON_III")]
56 GasSiphonIii,
57 #[serde(rename = "MOUNT_SURVEYOR_I")]
58 SurveyorI,
59 #[serde(rename = "MOUNT_SURVEYOR_II")]
60 SurveyorIi,
61 #[serde(rename = "MOUNT_SURVEYOR_III")]
62 SurveyorIii,
63 #[serde(rename = "MOUNT_SENSOR_ARRAY_I")]
64 SensorArrayI,
65 #[serde(rename = "MOUNT_SENSOR_ARRAY_II")]
66 SensorArrayIi,
67 #[serde(rename = "MOUNT_SENSOR_ARRAY_III")]
68 SensorArrayIii,
69 #[serde(rename = "MOUNT_MINING_LASER_I")]
70 MiningLaserI,
71 #[serde(rename = "MOUNT_MINING_LASER_II")]
72 MiningLaserIi,
73 #[serde(rename = "MOUNT_MINING_LASER_III")]
74 MiningLaserIii,
75 #[serde(rename = "MOUNT_LASER_CANNON_I")]
76 LaserCannonI,
77 #[serde(rename = "MOUNT_MISSILE_LAUNCHER_I")]
78 MissileLauncherI,
79 #[serde(rename = "MOUNT_TURRET_I")]
80 TurretI,
81}
82
83impl Default for Symbol {
84 fn default() -> Symbol {
85 Self::GasSiphonI
86 }
87}
88#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
90pub enum Deposits {
91 #[serde(rename = "QUARTZ_SAND")]
92 QuartzSand,
93 #[serde(rename = "SILICON_CRYSTALS")]
94 SiliconCrystals,
95 #[serde(rename = "PRECIOUS_STONES")]
96 PreciousStones,
97 #[serde(rename = "ICE_WATER")]
98 IceWater,
99 #[serde(rename = "AMMONIA_ICE")]
100 AmmoniaIce,
101 #[serde(rename = "IRON_ORE")]
102 IronOre,
103 #[serde(rename = "COPPER_ORE")]
104 CopperOre,
105 #[serde(rename = "SILVER_ORE")]
106 SilverOre,
107 #[serde(rename = "ALUMINUM_ORE")]
108 AluminumOre,
109 #[serde(rename = "GOLD_ORE")]
110 GoldOre,
111 #[serde(rename = "PLATINUM_ORE")]
112 PlatinumOre,
113 #[serde(rename = "DIAMONDS")]
114 Diamonds,
115 #[serde(rename = "URANITE_ORE")]
116 UraniteOre,
117 #[serde(rename = "MERITIUM_ORE")]
118 MeritiumOre,
119}
120
121impl Default for Deposits {
122 fn default() -> Deposits {
123 Self::QuartzSand
124 }
125}