1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
pub enum Event {
    EnterTrigger(TriggerEvent),
    LeaveTrigger(TriggerEvent),
    Button(ButtonEvent),
    FloatInput(FloatInputEvent),
    Broadcast(BroadcastEvent),
    VehicleEntered(VehicleEnteredEvent),
    ReceiveMessage(ReceiveMessageEvent),
    Empty,
}

#[derive(Debug, Serialize, Deserialize)]
pub enum BroadcastValue {
    Single(f32),
    String(String),
    Integer(i32),
    Serializeable(serde_json::Value),
}

#[derive(Debug, Serialize, Deserialize)]
pub enum ReceiveMessageValue {
    Single(f32),
    String(String),
    Integer(i32),
}

#[derive(Debug, Serialize, Deserialize)]
pub enum ReceiveMessageKind {
    Parent,
    Child,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ReceiveMessageEvent {
    pub slot_index: i32,
    pub id: String,
    pub kind: ReceiveMessageKind,
    pub value: ReceiveMessageValue,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct TriggerEvent {
    pub id: String,
    pub sensor_index: i32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ButtonEvent {
    pub id: String,
    pub value: bool,
    pub cockpit_index: u8,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct FloatInputEvent {
    pub id: String,
    pub value: f32,
    pub cockpit_index: i32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct BroadcastEvent {
    pub bus_id: String,
    pub id: String,
    pub value: BroadcastValue,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct VehicleEnteredEvent {
    pub id: String,
    /// Current speed in meters per second
    pub speed_mps: f32,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ReceiveMessageFromChildEvent {
    pub slot_index: i32,
    pub id: String,
    pub value: i32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ReceiveMessageFromParentEvent {
    pub index_of_class: i32,
    pub id: String,
    pub value: i32,
}