-
-
Notifications
You must be signed in to change notification settings - Fork 452
/
Copy pathCGame.h
288 lines (241 loc) · 10.5 KB
/
CGame.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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
/*****************************************************************************
*
* PROJECT: Multi Theft Auto v1.0
* LICENSE: See LICENSE in the top level directory
* FILE: sdk/game/CGame.h
* PURPOSE: Game base interface
*
* Multi Theft Auto is available from http://www.multitheftauto.com/
*
*****************************************************************************/
#pragma once
#include <memory>
#include <map>
#include <SString.h>
#include "Common.h"
#include "CWeaponInfo.h"
class C3DMarkers;
class CAEAudioHardware;
class CAERadioTrackManager;
class CAESoundManager;
class CAnimBlendAssocGroup;
class CAnimManager;
class CAudioContainer;
class CAudioEngine;
class CCamera;
class CCarEnterExit;
class CCheckpoints;
class CClock;
class CColStore;
class CControllerConfigManager;
class CCoronas;
class CEventList;
class CExplosionManager;
class CFireManager;
class CFx;
class CFxManager;
class CGameSettings;
class CGarages;
class CHandlingManager;
class CHud;
class CKeyGen;
class CModelInfo;
class CObjectGroupPhysicalProperties;
class CPad;
class CPathFind;
class CPed;
class CPickups;
class CPlayerInfo;
class CPointLights;
class CPools;
class CProjectileInfo;
class CRadar;
class CRenderWare;
class CRopes;
class CStats;
class CStreaming;
class CTasks;
class CVisibilityPlugins;
class CWaterManager;
class CWeapon;
class CWeaponInfo;
class CWeaponStat;
class CWeaponStatManager;
class CWeather;
class CWorld;
class CIplStore;
class CBuildingRemoval;
class CRenderer;
enum eEntityType;
enum ePedPieceTypes;
typedef bool(PreWeaponFireHandler)(class CPlayerPed* pPlayer, bool bStopIfUsingBulletSync);
typedef void(PostWeaponFireHandler)();
typedef void(TaskSimpleBeHitHandler)(class CPedSAInterface* pPedAttacker, ePedPieceTypes hitBodyPart, int hitBodySide, int weaponId);
enum eGameVersion
{
VERSION_ALL = 0,
VERSION_EU_10 = 5,
VERSION_US_10 = 11,
VERSION_11 = 15,
VERSION_20 = 20,
VERSION_UNKNOWN = 0xFF,
};
struct SMatchChannelStats
{
SString strTag;
uint uiNumMatchedTextures;
uint uiNumShaderAndEntities;
};
struct SShaderReplacementStats
{
uint uiNumReplacementRequests;
uint uiNumReplacementMatches;
uint uiTotalTextures;
uint uiTotalShaders;
uint uiTotalEntitesRefed;
std::map<uint, SMatchChannelStats> channelStatsList;
};
class __declspec(novtable) CGame
{
typedef std::unique_ptr<CAnimBlendAssocGroup> AssocGroup_type;
public:
virtual CPools* GetPools() const noexcept = 0;
virtual CPlayerInfo* GetPlayerInfo() = 0;
virtual CProjectileInfo* GetProjectileInfo() = 0;
virtual CRadar* GetRadar() = 0;
virtual CClock* GetClock() = 0;
virtual CCheckpoints* GetCheckpoints() = 0;
virtual CCoronas* GetCoronas() = 0;
virtual CEventList* GetEventList() = 0;
virtual CFireManager* GetFireManager() = 0;
virtual CExplosionManager* GetExplosionManager() = 0;
virtual CGarages* GetGarages() = 0;
virtual CHud* GetHud() = 0;
virtual CWeather* GetWeather() = 0;
virtual CWorld* GetWorld() = 0;
virtual CCamera* GetCamera() = 0;
virtual CPickups* GetPickups() = 0;
virtual C3DMarkers* Get3DMarkers() = 0;
virtual CPad* GetPad() = 0;
virtual CAERadioTrackManager* GetAERadioTrackManager() = 0;
virtual CAudioEngine* GetAudioEngine() = 0;
virtual CAEAudioHardware* GetAEAudioHardware() = 0;
virtual CAESoundManager* GetAESoundManager() = 0;
virtual CAudioContainer* GetAudioContainer() = 0;
virtual CStats* GetStats() = 0;
virtual CTasks* GetTasks() = 0;
virtual CGameSettings* GetSettings() = 0;
virtual CCarEnterExit* GetCarEnterExit() = 0;
virtual CControllerConfigManager* GetControllerConfigManager() = 0;
virtual CRenderWare* GetRenderWare() = 0;
virtual CHandlingManager* GetHandlingManager() const noexcept = 0;
virtual CAnimManager* GetAnimManager() = 0;
virtual CStreaming* GetStreaming() = 0;
virtual CVisibilityPlugins* GetVisibilityPlugins() = 0;
virtual CKeyGen* GetKeyGen() = 0;
virtual CRopes* GetRopes() = 0;
virtual CFx* GetFx() = 0;
virtual CFxManager* GetFxManager() = 0;
virtual CWaterManager* GetWaterManager() = 0;
virtual CWeaponStatManager* GetWeaponStatManager() = 0;
virtual CPointLights* GetPointLights() = 0;
virtual CColStore* GetCollisionStore() = 0;
virtual CBuildingRemoval* GetBuildingRemoval() = 0;
virtual CRenderer* GetRenderer() const noexcept = 0;
virtual CWeaponInfo* GetWeaponInfo(eWeaponType weapon, eWeaponSkill skill = WEAPONSKILL_STD) = 0;
virtual CModelInfo* GetModelInfo(DWORD dwModelID, bool bCanBeInvalid = false) = 0;
virtual DWORD GetSystemTime() = 0;
virtual int GetSystemFrameCounter() const = 0;
virtual bool IsAtMenu() = 0;
virtual void StartGame() = 0;
virtual void SetSystemState(eSystemState State) = 0;
virtual eSystemState GetSystemState() = 0;
virtual void Pause(bool bPaused) = 0;
virtual void SetTimeScale(float fTimeScale) = 0;
virtual float GetFPS() = 0;
virtual float GetTimeStep() = 0;
virtual float GetOldTimeStep() = 0;
virtual float GetTimeScale() = 0;
virtual void Initialize() = 0;
virtual void Reset() = 0;
virtual void Terminate() = 0;
virtual bool InitLocalPlayer(class CClientPed* pClientPed) = 0;
virtual float GetGravity() = 0;
virtual void SetGravity(float fGravity) = 0;
virtual float GetGameSpeed() = 0;
virtual void SetGameSpeed(float fSpeed) = 0;
virtual unsigned long GetMinuteDuration() = 0;
virtual void SetMinuteDuration(unsigned long ulDelay) = 0;
virtual unsigned char GetBlurLevel() = 0;
virtual void SetBlurLevel(unsigned char ucLevel) = 0;
virtual void SetJetpackWeaponEnabled(eWeaponType weaponType, bool bEnabled);
virtual bool GetJetpackWeaponEnabled(eWeaponType weaponType);
virtual eGameVersion GetGameVersion() = 0;
virtual bool IsCheatEnabled(const char* szCheatName) = 0;
virtual bool SetCheatEnabled(const char* szCheatName, bool bEnable) = 0;
virtual void ResetCheats() = 0;
virtual bool IsRandomFoliageEnabled() = 0;
virtual void SetRandomFoliageEnabled(bool bEnable) = 0;
virtual bool IsMoonEasterEggEnabled() = 0;
virtual void SetMoonEasterEggEnabled(bool bEnable) = 0;
virtual bool IsExtraAirResistanceEnabled() = 0;
virtual void SetExtraAirResistanceEnabled(bool bEnable) = 0;
virtual bool IsUnderWorldWarpEnabled() = 0;
virtual void SetUnderWorldWarpEnabled(bool bEnable) = 0;
virtual void SetVehicleSunGlareEnabled(bool bEnabled) = 0;
virtual bool IsVehicleSunGlareEnabled() = 0;
virtual void SetCoronaZTestEnabled(bool isEnabled) = 0;
virtual bool IsCoronaZTestEnabled() const noexcept = 0;
virtual bool IsWaterCreaturesEnabled() const noexcept = 0;
virtual void SetWaterCreaturesEnabled(bool isEnabled) = 0;
virtual bool IsBurnFlippedCarsEnabled() const noexcept = 0;
virtual void SetBurnFlippedCarsEnabled(bool isEnabled) = 0;
virtual bool IsFireballDestructEnabled() const noexcept = 0;
virtual void SetFireballDestructEnabled(bool isEnabled) = 0;
virtual bool IsExtendedWaterCannonsEnabled() const noexcept = 0;
virtual void SetExtendedWaterCannonsEnabled(bool isEnabled) = 0;
virtual bool IsRoadSignsTextEnabled() const noexcept = 0;
virtual void SetRoadSignsTextEnabled(bool isEnabled) = 0;
virtual bool IsTunnelWeatherBlendEnabled() const noexcept = 0;
virtual void SetTunnelWeatherBlendEnabled(bool isEnabled) = 0;
virtual bool IsIgnoreFireStateEnabled() const noexcept = 0;
virtual void SetIgnoreFireStateEnabled(bool isEnabled) = 0;
virtual bool IsVehicleBurnExplosionsEnabled() const noexcept = 0;
virtual void SetVehicleBurnExplosionsEnabled(bool isEnabled) = 0;
virtual CWeapon* CreateWeapon() = 0;
virtual CWeaponStat* CreateWeaponStat(eWeaponType weaponType, eWeaponSkill weaponSkill) = 0;
virtual void SetWeaponRenderEnabled(bool enabled) = 0;
virtual bool IsWeaponRenderEnabled() const = 0;
virtual bool VerifySADataFileNames() = 0;
virtual bool PerformChecks() = 0;
virtual int& GetCheckStatus() = 0;
virtual void SetAsyncLoadingFromScript(bool bScriptEnabled, bool bScriptForced) = 0;
virtual void SuspendASyncLoading(bool bSuspend, uint uiAutoUnsuspendDelay = 0) = 0;
virtual bool IsASyncLoadingEnabled(bool bIgnoreSuspend = false) = 0;
virtual bool HasCreditScreenFadedOut() = 0;
virtual void FlushPendingRestreamIPL() = 0;
virtual void ResetModelLodDistances() = 0;
virtual void ResetModelFlags() = 0;
virtual void ResetAlphaTransparencies() = 0;
virtual void DisableVSync() = 0;
virtual void ResetModelTimes() = 0;
virtual void OnPedContextChange(CPed* pPedContext) = 0;
virtual CPed* GetPedContext() = 0;
virtual void GetShaderReplacementStats(SShaderReplacementStats& outStats) = 0;
virtual void SetPreWeaponFireHandler(PreWeaponFireHandler* pPreWeaponFireHandler) = 0;
virtual void SetPostWeaponFireHandler(PostWeaponFireHandler* pPostWeaponFireHandler) = 0;
virtual void SetTaskSimpleBeHitHandler(TaskSimpleBeHitHandler* pTaskSimpleBeHitHandler) = 0;
virtual CObjectGroupPhysicalProperties* GetObjectGroupPhysicalProperties(unsigned char ucObjectGroup) = 0;
virtual int32_t GetBaseIDforDFF() = 0;
virtual int32_t GetBaseIDforTXD() = 0;
virtual int32_t GetBaseIDforCOL() = 0;
virtual int32_t GetBaseIDforIPL() = 0;
virtual int32_t GetBaseIDforDAT() = 0;
virtual int32_t GetBaseIDforIFP() = 0;
virtual int32_t GetBaseIDforRRR() = 0;
virtual int32_t GetBaseIDforSCM() = 0;
virtual int32_t GetCountOfAllFileIDs() = 0;
virtual void RemoveGameWorld() = 0;
virtual void RestoreGameWorld() = 0;
virtual bool SetBuildingPoolSize(size_t size) = 0;
};