traaains/editor/train/placing/
templates.rs1use std::fmt::Display;
14
15use strum::EnumIter;
16
17#[derive(Clone, EnumIter, PartialEq, Eq)]
18pub enum CarriageBogiesTemplate {
19 Single,
20 Double,
21}
22
23impl Display for CarriageBogiesTemplate {
24 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
25 f.write_str(match self {
26 CarriageBogiesTemplate::Single => "Single",
27 CarriageBogiesTemplate::Double => "Double",
28 })
29 }
30}
31
32#[derive(Clone)]
33pub struct CarriageTemplate {
34 pub length: f32,
35 pub width: f32,
36 pub mass: f32,
37 pub power: f32,
38 pub bogies: CarriageBogiesTemplate,
39}
40
41impl Default for CarriageTemplate {
42 fn default() -> Self {
43 CarriageTemplate {
45 length: 20.0,
46 width: 2.8,
47 mass: 40_000.0,
48 power: 60_000.0,
49 bogies: CarriageBogiesTemplate::Single,
50 }
51 }
52}