lotus_script/
event.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize)]
4pub enum Event {
5    EnterTrigger(TriggerEvent),
6    LeaveTrigger(TriggerEvent),
7    Button(ButtonEvent),
8    FloatInput(FloatInputEvent),
9    Broadcast(BroadcastEvent),
10    VehicleEntered(VehicleEnteredEvent),
11    ReceiveMessage(ReceiveMessageEvent),
12    Empty,
13}
14
15#[derive(Debug, Serialize, Deserialize)]
16pub enum BroadcastValue {
17    Single(f32),
18    String(String),
19    Integer(i32),
20    Serializeable(serde_json::Value),
21}
22
23#[derive(Debug, Serialize, Deserialize)]
24pub enum ReceiveMessageValue {
25    Single(f32),
26    String(String),
27    Integer(i32),
28}
29
30#[derive(Debug, Serialize, Deserialize)]
31pub enum ReceiveMessageKind {
32    Parent,
33    Child,
34}
35
36#[derive(Debug, Serialize, Deserialize)]
37pub struct ReceiveMessageEvent {
38    pub slot_index: i32,
39    pub id: String,
40    pub kind: ReceiveMessageKind,
41    pub value: ReceiveMessageValue,
42}
43
44#[derive(Debug, Serialize, Deserialize)]
45pub struct TriggerEvent {
46    pub id: String,
47    pub sensor_index: i32,
48}
49
50#[derive(Debug, Serialize, Deserialize)]
51pub struct ButtonEvent {
52    pub id: String,
53    pub value: bool,
54    pub cockpit_index: u8,
55}
56
57#[derive(Debug, Serialize, Deserialize)]
58pub struct FloatInputEvent {
59    pub id: String,
60    pub value: f32,
61    pub cockpit_index: i32,
62}
63
64#[derive(Debug, Serialize, Deserialize)]
65pub struct BroadcastEvent {
66    pub bus_id: String,
67    pub id: String,
68    pub value: BroadcastValue,
69}
70#[derive(Debug, Serialize, Deserialize)]
71pub struct VehicleEnteredEvent {
72    pub id: String,
73    /// Current speed in meters per second
74    pub speed_mps: f32,
75}
76#[derive(Debug, Serialize, Deserialize)]
77pub struct ReceiveMessageFromChildEvent {
78    pub slot_index: i32,
79    pub id: String,
80    pub value: i32,
81}
82
83#[derive(Debug, Serialize, Deserialize)]
84pub struct ReceiveMessageFromParentEvent {
85    pub index_of_class: i32,
86    pub id: String,
87    pub value: i32,
88}