1use serde::{Deserialize, Serialize};
2use std::{any::Any, fmt::Debug};
3
4pub trait Message: Debug {
7 fn as_any(&self) -> &dyn Any;
8}
9
10pub trait MessageIdentity {
11 fn id() -> i32;
12}
13
14#[repr(C)]
17#[derive(Serialize, Deserialize, Debug, Default, Clone, Copy)]
18pub struct MsgError {
19 pub error_code: i32,
20}
21
22#[repr(C)]
25#[derive(Serialize, Deserialize, Debug, Default, Clone, Copy)]
26pub struct MsgEmpty {
27 pub value: i32, }
29
30#[repr(C)]
31#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Default, Clone, Copy)]
32pub struct MsgUse {
33 pub component_id: i32,
34 pub sticky: i32,
35}
36
37#[repr(C)]
38#[derive(Serialize, Deserialize, Debug, Default, Clone, Copy)]
39pub struct MsgVelocity {
40 pub x: f32,
41 pub y: f32,
42 pub speed: f32,
43}
44
45#[repr(C)]
46#[derive(Serialize, Deserialize, Debug, Default, Clone, Copy)]
47pub struct MsgAngle {
48 pub angle: f32,
49}
50
51#[repr(C)]
52#[derive(Serialize, Deserialize, Debug, Default, Clone, Copy)]
53pub struct MsgComponentStatusQuery {
54 pub component_id: i32,
55}
56
57#[repr(C)]
58#[derive(Serialize, Deserialize, Debug, Default, Clone, Copy)]
59pub struct RMsgComponentStatus {
60 pub component_id: i32,
61 pub health: f32,
62 pub cooldown: f32,
63 pub is_activated: bool,
64}
65
66#[repr(C)]
67#[derive(Serialize, Deserialize, Debug, Default, Clone, Copy)]
68pub struct MsgState {
69 pub value: i32,
70}
71
72#[repr(C)]
73#[derive(Serialize, Deserialize, Debug, Clone, Default)]
74pub struct RMsgState {
75 pub angle: f32,
76 pub vel_x: f32,
77 pub vel_y: f32,
78 pub health: f32,
79 pub buffs: Vec<String>,
80}
81
82#[repr(C)]
85#[derive(Serialize, Deserialize, Debug, Default, Clone, Copy)]
86pub struct MsgModuleStatusQuery {
87 pub module_id: i32,
88}
89
90#[repr(C)]
91#[derive(Serialize, Deserialize, Debug, Default, Clone, Copy)]
92pub struct RMsgModuleStatus {
93 pub cooldown: f32,
94}
95
96#[repr(C)]
97#[derive(Serialize, Deserialize, Debug, Default, Clone, Copy)]
98pub struct MsgTeleport {
99 pub x: f32,
100 pub y: f32,
101}
102
103#[repr(C)]
104#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
105pub struct MsgRadar {
106 pub value: i32, }
108
109#[repr(C)]
110#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
111pub struct RMsgRadar {
112 pub x: f32,
113 pub y: f32,
114 pub distance: f32,
115}
116
117#[repr(C)]
118#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
119pub struct MsgLaser {
120 pub angle: f32,
121}
122
123#[repr(C)]
124#[derive(Serialize, Deserialize, Debug, Clone, Default)]
125pub struct RMsgLaser {
126 pub tag: String,
127 pub kind: String,
128 pub distance: f32,
129 pub angle: f32,
130 pub buffs: Vec<String>,
131}
132
133#[repr(C)]
134#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
135pub struct MsgForceField {
136 pub value: i32,
137}
138
139#[repr(C)]
140#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
141pub struct MsgMine {
142 pub value: i32,
143}
144
145#[repr(C)]
151#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
152pub struct MsgTime {
153 pub value: i32, }
155
156#[repr(C)]
157#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
158pub struct RMsgTime {
159 pub timestamp: f32, }
161
162#[repr(C)]
163#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
164pub struct MsgRepair {
165 pub component_id: i32,
166}
167
168#[repr(C)]
169#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
170pub struct RMsgRepair {
171 pub healed_amount: f32,
172}
173
174#[repr(C)]
175#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
176pub struct MsgThrust {
177 pub angle: f32,
178}
179
180#[repr(C)]
181#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
182pub struct MsgScan {
183 pub value: i32,
184}
185
186#[repr(C)]
187#[derive(Serialize, Deserialize, Debug, Clone, Default)]
188pub struct RMsgScanObject {
189 pub tag: String,
190 pub kind: String,
191 pub x: f32,
192 pub y: f32,
193 pub buffs: Vec<String>,
194}
195
196#[repr(C)]
197#[derive(Serialize, Deserialize, Debug, Clone, Default)]
198pub struct RMsgScan {
199 pub objects: Vec<RMsgScanObject>,
200}
201
202#[repr(C)]
203#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
204pub struct MsgGPS {
205 pub value: i32,
206}
207
208#[repr(C)]
209#[derive(Serialize, Deserialize, Debug, Clone, Default)]
210pub struct RMsgGPS {
211 pub x: f32,
212 pub y: f32,
213}
214
215#[repr(C)]
216#[derive(Serialize, Deserialize, Debug, Clone, Copy, Default)]
217pub struct MsgAwaitAction {
218 pub value: i32,
219}