swift
fs9.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2014 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_SIMPLUGIN_FS9_FS9SDK_H
7 #define SWIFT_SIMPLUGIN_FS9_FS9SDK_H
8 
9 #include <array>
10 
11 #include <QByteArray>
12 #include <QString>
13 
14 #ifndef NOMINMAX
15 # define NOMINMAX
16 #endif
17 #include <dplay8.h>
18 
19 namespace swift::simplugin::fs9
20 {
22  class CFs9Sdk
23  {
24  public:
27  {
28  ENGINE_TYPE_PISTON = 0,
29  ENGINE_TYPE_JET = 1,
30  ENGINE_TYPE_NONE = 2,
31  ENGINE_TYPE_HELO_TURBINE = 3,
32  ENGINE_TYPE_TURBOPROP = 5
33  };
34 
37  {
38  MULTIPLAYER_PACKET_ID_BASE = 0x1000,
39  MULTIPLAYER_PACKET_ID_PARAMS = MULTIPLAYER_PACKET_ID_BASE,
40  MULTIPLAYER_PACKET_ID_CHANGE_PLAYER_PLANE = 0x1003,
41  MULTIPLAYER_PACKET_ID_POSITION_SLEWMODE = 0x100C,
42  MULTIPLAYER_PACKET_ID_POSITION_VELOCITY = 0x100D,
43  MPCHAT_PACKET_ID_CHAT_TEXT_SEND = 0x1017,
44  };
45 
47  static GUID guid()
48  {
49  return { 0x0808caa5, 0xe62c, 0x4691, { 0x89, 0x57, 0x5d, 0x45, 0x24, 0xb9, 0x22, 0xda } };
50  }
51 
53  static double pitchMultiplier() { return 256.0 / 90.0; }
54 
56  static double bankMultiplier() { return 512.0 / 180.0; }
57 
59  static double headingMultiplier() { return 1024.0 / 360.0; }
60 
62  static double maxPath() { return 260; }
63  };
64 
67  {
68  quint32 packet_id = 0;
69  quint32 data_size = 0;
70  };
71 
85  {
86  quint32 application_time = 0;
87  quint32 packet_index = 0;
88  quint8 unknown8 = 0;
89  quint8 unknown9 = 0;
90  quint8 flaps_left = 0;
91  quint8 flaps_right = 0;
92  quint8 unknown12 = 0;
93  quint8 unknown13 = 0;
94  quint8 unknown14 = 0;
95  quint8 unknown15 = 0;
96  quint8 unknown16 = 0;
97  quint8 unknown17 = 0;
98  quint8 unknown18 = 0;
99  quint8 unknown19 = 0;
100  quint8 gear_center = 0;
101  quint8 gear_left = 0;
102  quint8 gear_right = 0;
103  quint8 engine_1 = 0;
104  quint8 engine_2 = 0;
105  quint8 unknown25 = 0;
106  quint8 unknown26 = 0;
107  quint8 unknown27 = 0;
108  };
109 
112  {
113  QString chat_data;
114  };
115 
118  {
120  QString aircraft_name;
121  };
122 
125  {
126  quint32 pbh = 0;
127  qint32 lat_i = 0;
128  qint32 lon_hi = 0;
129  qint32 alt_i = 0;
130  quint16 lat_f = 0;
131  quint16 lon_lo = 0;
132  quint16 alt_f = 0;
133  };
134 
137  {
138  quint32 application_time = 0;
139  quint32 packet_index = 0;
140  std::array<quint8, 4> reserved = std::array<quint8, 4> { { 0, 0, 0, 0 } };
141  quint32 pbh = 0;
142  qint32 lat_i = 0;
143  qint32 lon_hi = 0;
144  qint32 alt_i = 0;
145  quint16 lat_f = 0;
146  quint16 lon_lo = 0;
147  quint16 alt_f = 0;
148  std::array<quint8, 2> unknown = std::array<quint8, 2> { { 0, 0 } };
149  };
150 
153  {
154  quint32 packet_index = 0;
155  quint32 application_time = 0;
156  qint32 lat_velocity = 0;
157  qint32 lon_velocity = 0;
158  qint32 alt_velocity = 0;
159  quint32 ground_velocity = 0;
160  std::array<quint8, 4> reserved = std::array<quint8, 4> { { 0, 0, 0, 0 } };
161  quint32 pbh = 0;
162  qint32 lat_i = 0;
163  qint32 lon_hi = 0;
164  qint32 alt_i = 0;
165  quint16 lat_f = 0;
166  quint16 lon_lo = 0;
167  quint16 alt_f = 0;
168  };
169 
172  {
175  {
176  OBSERVER = 0x0001,
177  PARAMS_RECV = 0x0002,
178  PARAMS_SEND = 0x0004
179  };
180 
181  quint32 dwFlags = 0;
182  char szAircraft[MAX_PATH + 1];
183  };
184 
187  {
194  };
195 
197  union FS_PBH
198  {
199  unsigned int pbh = 0;
200 
202  struct
203  {
204  unsigned int unused : 1;
205  unsigned int onground : 1;
206  unsigned int hdg : 10;
207  int bank : 10;
208  int pitch : 10;
209  };
210  };
211 } // namespace swift::simplugin::fs9
212 
213 #endif // SWIFT_SIMPLUGIN_FS9_FS9SDK_H
static double bankMultiplier()
Return the FS9 bank multiplier.
Definition: fs9.h:56
MULTIPLAYER_PACKET_ID
Multiplayer packet id.
Definition: fs9.h:37
static double maxPath()
Max Path.
Definition: fs9.h:62
static GUID guid()
Get FS9 application GUID.
Definition: fs9.h:47
static double headingMultiplier()
Returns the FS9 heading multiplier.
Definition: fs9.h:59
EngineType
Engine type.
Definition: fs9.h:27
static double pitchMultiplier()
Returns the FS9 pitch multiplier.
Definition: fs9.h:53
unsigned long DWORD
Fake Windows DWORD.
DWORD dwAircraftOffset
Aircraft offset.
Definition: fs9.h:191
DWORD dwPlayerInfoFlags
Player info flags.
Definition: fs9.h:188
DWORD dwAircraftSize
Aircraft size.
Definition: fs9.h:192
Multiplayer player aircraft name packet.
Definition: fs9.h:118
Multiplayer hacket header.
Definition: fs9.h:67
Multiplayer packet aircraft parameter.
Definition: fs9.h:85
quint32 application_time
Application time - ignored.
Definition: fs9.h:86
Multiplayer position packet in slew mode.
Definition: fs9.h:137
quint32 application_time
Application time - ignored.
Definition: fs9.h:138
std::array< quint8, 4 > reserved
Reserved.
Definition: fs9.h:140
std::array< quint8, 2 > unknown
Unknown packet.
Definition: fs9.h:148
Full multiplayer position and velocity packet.
Definition: fs9.h:153
quint32 application_time
Application time - ignored.
Definition: fs9.h:155
std::array< quint8, 4 > reserved
Reserved.
Definition: fs9.h:160
quint32 dwFlags
Player flags.
Definition: fs9.h:181
PLAYER_INFO_FLAGS
Player info flags.
Definition: fs9.h:175
char szAircraft[MAX_PATH+1]
Aircraft model type.
Definition: fs9.h:182
Reduced multiplayer position packet.
Definition: fs9.h:125
quint16 lat_f
Latitude value - decimal part.
Definition: fs9.h:130
qint32 lon_hi
Longitude value - integer part.
Definition: fs9.h:128
quint32 pbh
Struct pitch/bank/heading.
Definition: fs9.h:126
qint32 lat_i
Latitude value - integer part.
Definition: fs9.h:127
quint16 lon_lo
Longitude value - decimal part.
Definition: fs9.h:131
qint32 alt_i
Altitude value - integer part.
Definition: fs9.h:129
quint16 alt_f
Altitude value - decimal part.
Definition: fs9.h:132
Pitch/Bank/Heading.
Definition: fs9.h:198
unsigned int pbh
Pitch/Bank/Heading as integer value.
Definition: fs9.h:199
unsigned int onground
Onground flag.
Definition: fs9.h:205
unsigned int unused
unused bit
Definition: fs9.h:204
unsigned int hdg
Heading.
Definition: fs9.h:206