forked from Phobos-developers/YRpp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJumpjetLocomotionClass.h
116 lines (98 loc) · 2.85 KB
/
JumpjetLocomotionClass.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
//Locomotor = {92612C46-F71F-11d1-AC9F-006008055BB5}
#pragma once
#include <LocomotionClass.h>
class NOVTABLE JumpjetLocomotionClass : public LocomotionClass, public IPiggyback
{
public:
static constexpr uintptr_t ILocoVTable = 0x7ECD68;
static constexpr reference<CLSID const, 0x7E9AC0u> const ClassGUID {};
enum State
{
Grounded = 0,
Ascending = 1,
Hovering = 2,
Cruising = 3,
Descending = 4,
Crashing = 5,
Unknown = 6,
};
//IUnknown
virtual HRESULT __stdcall QueryInterface(REFIID iid, void** ppvObject) R0;
virtual ULONG __stdcall AddRef() R0;
virtual ULONG __stdcall Release() R0;
//IPiggyback
virtual HRESULT __stdcall Begin_Piggyback(ILocomotion* pointer) R0;
virtual HRESULT __stdcall End_Piggyback(ILocomotion** pointer) R0;
virtual bool __stdcall Is_Ok_To_End() R0;
virtual HRESULT __stdcall Piggyback_CLSID(GUID* classid) R0;
virtual bool __stdcall Is_Piggybacking() R0;
//ILocomotion
virtual bool __stdcall Is_Moving() R0;
virtual CoordStruct* __stdcall Destination(CoordStruct* pcoord) R0;
virtual bool __stdcall Process() R0;
virtual void __stdcall Move_To(CoordStruct to) RX;
virtual void __stdcall Stop_Moving() RX;
virtual void __stdcall Do_Turn(DirStruct coord) RX;
virtual Layer __stdcall In_Which_Layer() RT(Layer);
virtual void __stdcall Mark_All_Occupation_Bits(MarkType mark) RX;
virtual void __stdcall Limbo() RX;
//IPersist
virtual HRESULT __stdcall GetClassID(CLSID* pClassID) R0;
//IPersistStream
virtual HRESULT __stdcall Load(IStream* pStm) R0;
virtual HRESULT __stdcall Save(IStream* pStm, BOOL fClearDirty) R0;
//Destructor
virtual ~JumpjetLocomotionClass() RX;
//LocomotionClass
virtual int Size() R0;
//JumpjetLocomotionClass
//Constructor
JumpjetLocomotionClass()
: LocomotionClass(noinit_t())
{ JMP_THIS(0x54AC40); }
protected:
explicit __forceinline JumpjetLocomotionClass(noinit_t)
: LocomotionClass(noinit_t())
{ }
//===========================================================================
//===== Properties ==========================================================
//===========================================================================
public:
int TurnRate;
int Speed;
float Climb;
float Crash;
int Height;
float Accel;
float Wobbles;
int Deviation;
bool NoWobbles;
BYTE unknown_3D;
BYTE unknown_3E;
BYTE unknown_3F;
CoordStruct DestinationCoords;
bool IsMoving;
BYTE unknown_4D;
BYTE unknown_4E;
BYTE unknown_4F;
JumpjetLocomotionClass::State State;
FacingClass LocomotionFacing;
BYTE unknown_6C;
BYTE unknown_6D;
BYTE unknown_6E;
BYTE unknown_6F;
double CurrentSpeed;
double MaxSpeed;
int CurrentHeight;
BYTE unknown_84;
BYTE unknown_85;
BYTE unknown_86;
BYTE unknown_87;
double CurrentWobbles;
bool DestinationReached;
BYTE unknown_91;
BYTE unknown_92;
BYTE unknown_93;
ILocomotion* Piggybackee;
};
static_assert(sizeof(JumpjetLocomotionClass) == 0x98);