oort_shared/
lib.rs

1#[derive(Copy, Clone)]
2pub enum SystemState {
3    Class,
4    Seed,
5    Orders,
6    PositionX,
7    PositionY,
8    VelocityX,
9    VelocityY,
10    Heading,
11    AngularVelocity,
12
13    AccelerateX,
14    AccelerateY,
15    Torque,
16
17    Gun0Aim,
18    Gun0Fire,
19    Gun1Aim,
20    Gun1Fire,
21    Gun2Aim,
22    Gun2Fire,
23    Gun3Aim,
24    Gun3Fire,
25
26    Missile0Launch,
27    Missile0Orders,
28    Missile1Launch,
29    Missile1Orders,
30    Missile2Launch,
31    Missile2Orders,
32    Missile3Launch,
33    Missile3Orders,
34
35    Explode,
36
37    RadarHeading,
38    RadarWidth,
39    RadarContactFound,
40    RadarContactClass,
41    RadarContactPositionX,
42    RadarContactPositionY,
43    RadarContactVelocityX,
44    RadarContactVelocityY,
45
46    DebugTextPointer,
47    DebugTextLength,
48
49    MaxAccelerationX,
50    MaxAccelerationY,
51    MaxAngularAcceleration,
52
53    RadioChannel,
54    RadioSend,
55    RadioReceive,
56
57    DebugLinesPointer,
58    DebugLinesLength,
59
60    RadarMinDistance,
61    RadarMaxDistance,
62
63    CurrentTick,
64    Energy,
65
66    Size,
67    MaxSize = 128,
68}
69
70/// Identifiers for each class of ship.
71#[derive(Copy, Clone, PartialEq, Eq, Debug)]
72pub enum Class {
73    Fighter,
74    Frigate,
75    Cruiser,
76    Asteroid,
77    Target,
78    Missile,
79    Torpedo,
80    Unknown,
81}
82
83impl Class {
84    pub fn from_f64(v: f64) -> Class {
85        match v as u32 {
86            0 => Class::Fighter,
87            1 => Class::Frigate,
88            2 => Class::Cruiser,
89            3 => Class::Asteroid,
90            4 => Class::Target,
91            5 => Class::Missile,
92            6 => Class::Torpedo,
93            _ => Class::Unknown,
94        }
95    }
96}
97
98#[derive(Default, Clone)]
99pub struct Line {
100    pub x0: f64,
101    pub y0: f64,
102    pub x1: f64,
103    pub y1: f64,
104    pub color: u32,
105}