Rise
The Vieneo Province
GameClass.h
Go to the documentation of this file.
1 #pragma once
2 
3 //#define _TOUCHFILES // be careful this will slow down the PatchScan process now! ONLY WORKS WITH DEBUG BUILD
4 
5 #include "gui.h"
6 #include "Sound.h"
7 #include "Graphics.h"
8 #include "Bus.h"
9 #include "Logger.h"
10 #include "Displays/Displays.h"
11 #include "Modules/Module.h"
12 #ifdef _DEBUG
13 #include "performance.h"
14 #endif
15 #include "Config/config.h"
16 #include "GameState.h"
17 #include "DiscordRPC.h"
18 
19 // TeamSpeak
20 //#include <public_definitions.h>
21 
22 #define designedWidthC 1680.0f
23 #define designedHeightC 1050.0f
24 
25 class Viewscreen;
26 
27 class Resource
28 {
29 public:
30  char name[32];
31  _D3DPOOL pool;
32  char status = 0; // 0=created, 1=lost, 2=reset, 3=released
33  // could track type
34  // could track state
35  Resource(const char* prmName, _D3DPOOL prmPool)
36  {
37  strcpy_s(name, 32, prmName);
38  pool = prmPool;
39  }
40 };
41 
42 class GameClass
43 {
44  void InitializeGame();
45  BOOL IsDepthFormatOk(D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat) const;
46  void SendScreenShot(HBITMAP hbitmap) const;
47 
48  // probably change the type to some object that has a string name
49  // status enum (created, lost, reset, dropped)
50  std::vector<Resource> trackedResources;
51 
52  float lastDeviceChange = 2.0f; // for WM_DEVICECHANGE
53  bool lastDeviceChangedSound = false;
54  bool lastDeviceChangedInput = false;
55  HDEVNOTIFY dev_notify = nullptr;
56  bool maximized = false;
57 
58 public:
59  GameClass();
60  ~GameClass();
61  void Close();
62  void KillScannerData() const;
63  void RequestScannerData() const;
64  static void TouchFile(const WCHAR* str);
65  void RepairVehicle() const;
66  void RequestClose() const;
67  void ToggleFullScreen(bool goFullScreen);
68 
69  //Default callback functions from DXUT
70  //need to be static since we can't use instantiated class members as callbacks, we can pass ourselves in the pUserContext tho
71  static bool CALLBACK IsDeviceAcceptable(D3DCAPS9* pCaps, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, bool bWindowed, void* pUserContext);
72  static bool CALLBACK ModifyDeviceSettings(DXUTDeviceSettings* pDeviceSettings, void* pUserContext);
73  static HRESULT CALLBACK OnCreateDevice(IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext);
74  static HRESULT CALLBACK OnResetDevice(IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext);
75  static void CALLBACK OnFrameMove(double fTime, float fElapsedTime, void* pUserContext);
76  static void CALLBACK OnFrameRender(IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext);
77  static LRESULT CALLBACK MsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool* pbNoFurtherProcessing, void* pUserContext);
78  static void CALLBACK KeyboardProc(UINT nChar, bool bKeyDown, bool bAltDown, void* pUserContext);
79  static void CALLBACK OnLostDevice(void* pUserContext);
80  static void CALLBACK OnDestroyDevice(void* pUserContext);
81 
82  void LoadTexture(LPDIRECT3DTEXTURE9* resource, const std::string& pointerName, const WCHAR* file, D3DFORMAT format = D3DFMT_A8R8G8B8);
83 
84  void FlightDirectorOn() const;
85  void GearUpShift() const;
86  void GearDownShift() const;
87  void AutopilotDisconnect() const;
88  bool TurnOffTVM() const;
89  bool TurnOffDOR() const;
90  void LostScannerTarget(const char* msg) const;
91  void LostVerticalTarget() const;
92  void UseOrDisuseInventoryItemType(int itemtype, int itemId, int vehicleId) const;
93  void GetProgramVersion(int& major, int& minor, int& build, int& revision) const;
94  static float GetCpuSpeedMhz();
95 
96  void AddTrackedResource(const char* name, _D3DPOOL pool = D3DPOOL_MANAGED);
97  void UpdateTrackedResource(const char* name, int status); // 0=created, 1=lost, 2=reset, 3=released
98 
99  HRESULT InitDirectInput(HWND hDlg) const;
100 
101  //public vars
103  bool vphelp[vphelpC]{};
104 
106 
107  Networking* networking = nullptr;
108  Sound* sound = nullptr;
109  Graphics* graphics = nullptr;
110  HMI* GUI = nullptr;
111  Viewscreen* viewscreen = nullptr;
112  Bus* bus = nullptr;
113  Logger* logger = nullptr;
114  Displays* displays = nullptr;
115  DiscordRPC* discord = nullptr;
116 
117  std::vector<Module*> modules;
118 
119  float FrameElapsedTime = 0;
120 
122  short loadstage = 0;
123 
124  short stage = 0, instage = 0;
125 
126  unsigned char beginScene = 0;
127 
128  float displayscale = 0, dpiscale = 0;
129  float displayWidth = 0, displayHeight = 0;
130 
131  bool showKeymapOverlay = false;
132 
133  void ScreenCapture() const;
134 
135 
136 private:
137 
138 #ifdef _DEBUG
139  CStopWatch *vpfmTimer = nullptr;
140  CStopWatch *vpfrTimer = nullptr;
141  CStopWatch *uifmTimer = nullptr;
142  CStopWatch *uifrTimer = nullptr;
143  CStopWatch *otfmTimer = nullptr;
144  CStopWatch *otfrTimer = nullptr;
145 #endif
146 
147 };
static void CALLBACK OnLostDevice(void *pUserContext)
Definition: GameClass.cpp:2544
bool TurnOffTVM() const
Definition: GameClass.cpp:2243
int screenShotStatus
Definition: GameClass.h:105
static void CALLBACK KeyboardProc(UINT nChar, bool bKeyDown, bool bAltDown, void *pUserContext)
Definition: GameClass.cpp:2287
std::vector< Resource > trackedResources
Definition: GameClass.h:50
static void CALLBACK OnDestroyDevice(void *pUserContext)
Definition: GameClass.cpp:2603
Definition: Sound.h:276
Config config
Definition: GameClass.h:102
BOOL IsDepthFormatOk(D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat) const
Definition: GameClass.cpp:470
GameState displaystage
Definition: GameClass.h:121
unsigned char beginScene
Definition: GameClass.h:126
Definition: Logger.h:9
_D3DPOOL pool
Definition: GameClass.h:31
static LRESULT CALLBACK MsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool *pbNoFurtherProcessing, void *pUserContext)
Definition: GameClass.cpp:1694
short instage
Definition: GameClass.h:124
void AutopilotDisconnect() const
Definition: GameClass.cpp:2233
static HRESULT CALLBACK OnResetDevice(IDirect3DDevice9 *pd3dDevice, const D3DSURFACE_DESC *pBackBufferSurfaceDesc, void *pUserContext)
Definition: GameClass.cpp:654
float displayHeight
Definition: GameClass.h:129
static void CALLBACK OnFrameRender(IDirect3DDevice9 *pd3dDevice, double fTime, float fElapsedTime, void *pUserContext)
Definition: GameClass.cpp:1495
void GearUpShift() const
Definition: GameClass.cpp:2070
static float GetCpuSpeedMhz()
Definition: GameClass.cpp:2692
void InitializeGame()
Definition: GameClass.cpp:293
std::vector< Module * > modules
Definition: GameClass.h:117
void ToggleFullScreen(bool goFullScreen)
Definition: GameClass.cpp:269
short stage
Definition: GameClass.h:124
float displayWidth
Definition: GameClass.h:129
static HRESULT CALLBACK OnCreateDevice(IDirect3DDevice9 *pd3dDevice, const D3DSURFACE_DESC *pBackBufferSurfaceDesc, void *pUserContext)
Definition: GameClass.cpp:610
Logger * logger
Definition: GameClass.h:113
#define vphelpC
Definition: globals.h:64
bool showKeymapOverlay
Definition: GameClass.h:131
DiscordRPC * discord
Definition: GameClass.h:115
Definition: Bus.h:16
bool vphelp[vphelpC]
Definition: GameClass.h:103
Definition: config.h:8
static bool CALLBACK IsDeviceAcceptable(D3DCAPS9 *pCaps, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, bool bWindowed, void *pUserContext)
Definition: GameClass.cpp:505
void LostScannerTarget(const char *msg) const
Definition: GameClass.cpp:2191
bool TurnOffDOR() const
Definition: GameClass.cpp:2262
void RequestScannerData() const
Definition: GameClass.cpp:132
void RequestClose() const
Definition: GameClass.cpp:261
void GetProgramVersion(int &major, int &minor, int &build, int &revision) const
Definition: GameClass.cpp:2644
void UseOrDisuseInventoryItemType(int itemtype, int itemId, int vehicleId) const
Definition: GameClass.cpp:729
Viewscreen * viewscreen
Definition: GameClass.h:111
void Close()
Definition: GameClass.cpp:72
Networking * networking
Definition: GameClass.h:107
void RepairVehicle() const
Definition: GameClass.cpp:168
float lastDeviceChange
Definition: GameClass.h:52
void KillScannerData() const
Definition: GameClass.cpp:125
HRESULT InitDirectInput(HWND hDlg) const
Definition: GameClass.cpp:318
void LoadTexture(LPDIRECT3DTEXTURE9 *resource, const std::string &pointerName, const WCHAR *file, D3DFORMAT format=D3DFMT_A8R8G8B8)
Definition: GameClass.cpp:2020
void ScreenCapture() const
Definition: GameClass.cpp:436
bool lastDeviceChangedInput
Definition: GameClass.h:54
Graphics * graphics
Definition: GameClass.h:109
char name[32]
Definition: GameClass.h:30
void FlightDirectorOn() const
Definition: GameClass.cpp:1660
Sound * sound
Definition: GameClass.h:108
void SendScreenShot(HBITMAP hbitmap) const
Definition: GameClass.cpp:361
Definition: gui.h:696
float dpiscale
Definition: GameClass.h:128
static void CALLBACK OnFrameMove(double fTime, float fElapsedTime, void *pUserContext)
Definition: GameClass.cpp:771
bool lastDeviceChangedSound
Definition: GameClass.h:53
short loadstage
Definition: GameClass.h:122
HMI * GUI
Definition: GameClass.h:110
Resource(const char *prmName, _D3DPOOL prmPool)
Definition: GameClass.h:35
void AddTrackedResource(const char *name, _D3DPOOL pool=D3DPOOL_MANAGED)
Definition: GameClass.cpp:2702
float displayscale
Definition: GameClass.h:128
void LostVerticalTarget() const
Definition: GameClass.cpp:2222
char status
Definition: GameClass.h:32
void UpdateTrackedResource(const char *name, int status)
Definition: GameClass.cpp:2725
Bus * bus
Definition: GameClass.h:112
HDEVNOTIFY dev_notify
Definition: GameClass.h:55
void GearDownShift() const
Definition: GameClass.cpp:2133
Displays * displays
Definition: GameClass.h:114
static void TouchFile(const WCHAR *str)
Definition: GameClass.cpp:143
bool maximized
Definition: GameClass.h:56
GameState
Definition: GameState.h:3
float FrameElapsedTime
Definition: GameClass.h:119
static bool CALLBACK ModifyDeviceSettings(DXUTDeviceSettings *pDeviceSettings, void *pUserContext)
Definition: GameClass.cpp:516