space_traders/models/
ship_module.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
9pub struct ShipModule {
10 #[serde(rename = "symbol")]
12 pub symbol: Symbol,
13 #[serde(rename = "capacity", skip_serializing_if = "Option::is_none")]
15 pub capacity: Option<u32>,
16 #[serde(rename = "range", skip_serializing_if = "Option::is_none")]
18 pub range: Option<u32>,
19 #[serde(rename = "name")]
21 pub name: String,
22 #[serde(rename = "description")]
24 pub description: String,
25 #[serde(rename = "requirements")]
26 pub requirements: crate::models::ShipRequirements,
27}
28
29impl ShipModule {
30 #[allow(clippy::too_many_arguments)]
32 pub fn new(
33 symbol: Symbol,
34 name: String,
35 description: String,
36 requirements: crate::models::ShipRequirements,
37 ) -> ShipModule {
38 ShipModule {
39 symbol,
40 capacity: None,
41 range: None,
42 name,
43 description,
44 requirements,
45 }
46 }
47}
48
49#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
51pub enum Symbol {
52 #[serde(rename = "MODULE_MINERAL_PROCESSOR_I")]
53 MineralProcessorI,
54 #[serde(rename = "MODULE_CARGO_HOLD_I")]
55 CargoHoldI,
56 #[serde(rename = "MODULE_CREW_QUARTERS_I")]
57 CrewQuartersI,
58 #[serde(rename = "MODULE_ENVOY_QUARTERS_I")]
59 EnvoyQuartersI,
60 #[serde(rename = "MODULE_PASSENGER_CABIN_I")]
61 PassengerCabinI,
62 #[serde(rename = "MODULE_MICRO_REFINERY_I")]
63 MicroRefineryI,
64 #[serde(rename = "MODULE_ORE_REFINERY_I")]
65 OreRefineryI,
66 #[serde(rename = "MODULE_FUEL_REFINERY_I")]
67 FuelRefineryI,
68 #[serde(rename = "MODULE_SCIENCE_LAB_I")]
69 ScienceLabI,
70 #[serde(rename = "MODULE_JUMP_DRIVE_I")]
71 JumpDriveI,
72 #[serde(rename = "MODULE_JUMP_DRIVE_II")]
73 JumpDriveIi,
74 #[serde(rename = "MODULE_JUMP_DRIVE_III")]
75 JumpDriveIii,
76 #[serde(rename = "MODULE_WARP_DRIVE_I")]
77 WarpDriveI,
78 #[serde(rename = "MODULE_WARP_DRIVE_II")]
79 WarpDriveIi,
80 #[serde(rename = "MODULE_WARP_DRIVE_III")]
81 WarpDriveIii,
82 #[serde(rename = "MODULE_SHIELD_GENERATOR_I")]
83 ShieldGeneratorI,
84 #[serde(rename = "MODULE_SHIELD_GENERATOR_II")]
85 ShieldGeneratorIi,
86}
87
88impl Default for Symbol {
89 fn default() -> Symbol {
90 Self::MineralProcessorI
91 }
92}