space_traders/models/
ship_engine.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
9pub struct ShipEngine {
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 = "speed")]
24 pub speed: u32,
25 #[serde(rename = "requirements")]
26 pub requirements: crate::models::ShipRequirements,
27}
28
29impl ShipEngine {
30 #[allow(clippy::too_many_arguments)]
32 pub fn new(
33 symbol: Symbol,
34 name: String,
35 description: String,
36 speed: u32,
37 requirements: crate::models::ShipRequirements,
38 ) -> ShipEngine {
39 ShipEngine {
40 symbol,
41 name,
42 description,
43 condition: None,
44 speed,
45 requirements,
46 }
47 }
48}
49
50#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
52pub enum Symbol {
53 #[serde(rename = "ENGINE_IMPULSE_DRIVE_I")]
54 ImpulseDriveI,
55 #[serde(rename = "ENGINE_ION_DRIVE_I")]
56 IonDriveI,
57 #[serde(rename = "ENGINE_ION_DRIVE_II")]
58 IonDriveIi,
59 #[serde(rename = "ENGINE_HYPER_DRIVE_I")]
60 HyperDriveI,
61}
62
63impl Default for Symbol {
64 fn default() -> Symbol {
65 Self::ImpulseDriveI
66 }
67}