Skip to main content

traaains/editor/train/placing/
templates.rs

1//! Templates according to which trains should be built.
2//! While placing, only the meshes and materials are spawned, everything else is kept in a resource.
3
4// pub struct BogieTemplate {
5//     pub length: f32,
6// }
7
8// pub struct BogieMountTemplate {
9//     pub bogie: BogieTemplate,
10//     pub idx: f32,
11// }
12
13use 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        // random default train
44        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}