-
Notifications
You must be signed in to change notification settings - Fork 0
/
soap.h
134 lines (99 loc) · 3.89 KB
/
soap.h
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#pragma once
#if !defined(SOAP_H)
#define SOAP_H
namespace trainlist8 {
namespace soap {
// The DispatcherConnected message.
extern const WS_MESSAGE_DESCRIPTION dispatcherConnectedMessage;
// The possible dispatcher permissions.
enum class DispatcherPermissionLevel : int32_t {
GRANTED,
RESCINDED,
OBSERVER,
};
// The DTMF message, whose body is discarded.
extern const WS_MESSAGE_DESCRIPTION dtmfMessage;
// The body of a DispatcherPermission message.
struct DispatcherPermission final {
// Whether or not the player has permission to control AI trains.
BOOL aiPermission;
// The level of permission the player has over the dispatch board.
DispatcherPermissionLevel permission;
};
// The PermissionUpdate message, which has a DispatcherPermission struct as its body.
extern const WS_MESSAGE_DESCRIPTION permissionUpdateMessage;
// The RadioText message, whose body is discarded.
extern const WS_MESSAGE_DESCRIPTION radioTextMessage;
// The body of a SendSimulationState message.
struct SimulationState final {
// Whether this instance of Run 8 is connected to a multiplayer server.
BOOL client;
// The current date and time in the simulation.
WS_DATETIME time;
};
// The SendSimulationState message, which has a SimulationState struct as its body.
extern const WS_MESSAGE_DESCRIPTION sendSimulationStateMessage;
// The SetInterlockErrorSwitches message, whose body is discarded.
extern const WS_MESSAGE_DESCRIPTION setInterlockErrorSwitchesMessage;
// The SetOccupiedBlocks message, whose body is discarded.
extern const WS_MESSAGE_DESCRIPTION setOccupiedBlocksMessage;
// The SetOccupiedSwitches message, whose body is discarded.
extern const WS_MESSAGE_DESCRIPTION setOccupiedSwitchesMessage;
// The SetReversedSwitches message, whose body is discarded.
extern const WS_MESSAGE_DESCRIPTION setReversedSwitchesMessage;
// The SetSignals message, whose body is discarded.
extern const WS_MESSAGE_DESCRIPTION setSignalsMessage;
// The SetUnlockedSwitches message, whose body is discarded.
extern const WS_MESSAGE_DESCRIPTION setUnlockedSwitchesMessage;
// The possible engineer types.
enum class EngineerType : int32_t {
NONE,
PLAYER,
AI,
};
// The body of an UpdateTrainData message.
struct TrainData final {
// The internal train ID number used to refer to the train in dispatcher protocol messages.
uint32_t id;
// The string part of the locomotive’s identifier.
//
// For example, for BNSF1234, this field would be BNSF.
const wchar_t *railroadInitials;
// The numerical part of the locomotive’s identifier.
//
// For example, for BNSF1234, this field would be 1234.
uint32_t locomotiveNumber;
// The train’s symbol (aka destination tag).
const wchar_t *symbol;
// The number of axles in the train.
uint32_t axleCount;
// The HP/t rating of the train.
float horsepowerPerTon;
// The length of the train in feet.
uint32_t length;
// The train’s speed limit, considering both rolling stock and occupied track, in miles per hour.
uint32_t speedLimit;
// The weight of the train’s wagons or carriages, in tons (not including locomotives).
uint32_t weight;
// The block the train’s head end currently occupies.
//
// This is -1 for trains not in a DS-visible block.
int32_t block;
// How fast the train is currently travelling, in miles per hour.
//
// This is negative if the controlling locomotive is moving backwards.
float speed;
// The name of the human engineer driving the train, or an empty string if the train is uncrewed or driven by AI.
const wchar_t *engineerName;
// The type of engineer on board.
EngineerType engineerType;
// Whether the AI engineer has been ordered to brake and hold position.
BOOL holdPosition;
// Whether the AI engineer has been ordered to disembark when the train next stops.
BOOL relinquishWhenStopped;
};
// The UpdateTrainData message, which has a TrainData struct as its body.
extern const WS_MESSAGE_DESCRIPTION updateTrainDataMessage;
}
}
#endif