space_traders/models/
ship_frame.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
9pub struct ShipFrame {
10 #[serde(rename = "symbol")]
12 pub symbol: Symbol,
13 #[serde(rename = "name")]
15 pub name: String,
16 #[serde(rename = "description")]
18 pub description: String,
19 #[serde(rename = "condition", skip_serializing_if = "Option::is_none")]
21 pub condition: Option<u32>,
22 #[serde(rename = "moduleSlots")]
24 pub module_slots: u32,
25 #[serde(rename = "mountingPoints")]
27 pub mounting_points: u32,
28 #[serde(rename = "fuelCapacity")]
30 pub fuel_capacity: u32,
31 #[serde(rename = "requirements")]
32 pub requirements: crate::models::ShipRequirements,
33}
34
35impl ShipFrame {
36 #[allow(clippy::too_many_arguments)]
38 pub fn new(
39 symbol: Symbol,
40 name: String,
41 description: String,
42 module_slots: u32,
43 mounting_points: u32,
44 fuel_capacity: u32,
45 requirements: crate::models::ShipRequirements,
46 ) -> ShipFrame {
47 ShipFrame {
48 symbol,
49 name,
50 description,
51 condition: None,
52 module_slots,
53 mounting_points,
54 fuel_capacity,
55 requirements,
56 }
57 }
58}
59
60#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
62pub enum Symbol {
63 #[serde(rename = "FRAME_PROBE")]
64 Probe,
65 #[serde(rename = "FRAME_DRONE")]
66 Drone,
67 #[serde(rename = "FRAME_INTERCEPTOR")]
68 Interceptor,
69 #[serde(rename = "FRAME_RACER")]
70 Racer,
71 #[serde(rename = "FRAME_FIGHTER")]
72 Fighter,
73 #[serde(rename = "FRAME_FRIGATE")]
74 Frigate,
75 #[serde(rename = "FRAME_SHUTTLE")]
76 Shuttle,
77 #[serde(rename = "FRAME_EXPLORER")]
78 Explorer,
79 #[serde(rename = "FRAME_MINER")]
80 Miner,
81 #[serde(rename = "FRAME_LIGHT_FREIGHTER")]
82 LightFreighter,
83 #[serde(rename = "FRAME_HEAVY_FREIGHTER")]
84 HeavyFreighter,
85 #[serde(rename = "FRAME_TRANSPORT")]
86 Transport,
87 #[serde(rename = "FRAME_DESTROYER")]
88 Destroyer,
89 #[serde(rename = "FRAME_CRUISER")]
90 Cruiser,
91 #[serde(rename = "FRAME_CARRIER")]
92 Carrier,
93}
94
95impl Default for Symbol {
96 fn default() -> Symbol {
97 Self::Probe
98 }
99}