Mercurial > mm7
diff Engine/Game.h @ 2499:68cdef6879a0
engine folder
author | Ritor1 |
---|---|
date | Fri, 19 Sep 2014 02:57:42 +0600 |
parents | |
children | 407263babde8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Engine/Game.h Fri Sep 19 02:57:42 2014 +0600 @@ -0,0 +1,239 @@ +#pragma once +#include "VectorTypes.h" + +#include "OSAPI.h" + +#include "MapInfo.h" + + +#define GAME_FLAGS_1_01_lightmap_related 0x01 +#define GAME_FLAGS_1_DRAW_BLV_DEBUGS 0x08 +#define GAME_FLAGS_2_SATURATE_LIGHTMAPS 0x02 +#define GAME_FLAGS_2_ALTER_GRAVITY 0x08 +#define GAME_FLAGS_2_TARGETING_MODE 0x10 +#define GAME_FLAGS_2_DRAW_BLOODSPLATS 0x20 + + + +/* 320 */ +enum GAME_STATE +{ + GAME_STATE_PLAYING = 0, + GAME_FINISHED = 1, + GAME_STATE_CHANGE_LOCATION = 2, + GAME_STATE_LOADING_GAME = 3, + GAME_STATE_NEWGAME_OUT_GAMEMENU = 4, + GAME_STATE_5 = 5, + GAME_STATE_STARTING_NEW_GAME = 6, + GAME_STATE_GAME_QUITTING_TO_MAIN_MENU = 7, + GAME_STATE_PARTY_DIED = 8, + GAME_STATE_FINAL_WINDOW = 9, + GAME_STATE_A = 10 +}; + + + +/* 105 */ +#pragma pack(push, 1) +struct Game__StationaryLight +{ + Vec3_float_ vPosition; + Vec3_float_ vRGBColor; + float flt_18; +}; +#pragma pack(pop) + + +/* 108 */ +#pragma pack(push, 1) +struct Game_stru0 +{ + int field_0; + unsigned __int8 *ptr_4; + int field_8; + int field_C; +}; +#pragma pack(pop) + + +/* 279 */ +#pragma pack(push, 1) +//Game_stru1 +struct Game_Bloodsplat +{ + float x; + float y; + float z; + float r; + float g; + float b; + float radius; +}; +#pragma pack(pop) + + +class Vis; +class LightmapBuilder; +class ParticleEngine; +class Mouse; +class Keyboard; +class ThreadWard; +class CShow; +class GammaController; +struct stru9; +struct stru10; + +/* 104 */ +#pragma pack(push, 1) +struct Game +{ + static Game *Create(); + static void Destroy(); + +protected: Game(); +protected: virtual ~Game(); + + +public: + void _44E904(); + bool InitializeGammaController(); + bool PickMouse(float fPickDepth, unsigned int uMouseX, unsigned int uMouseY, bool bOutline, struct Vis_SelectionFilter *sprite_filter, struct Vis_SelectionFilter *face_filter); + bool PickKeyboard(bool bOutline, struct Vis_SelectionFilter *sprite_filter, struct Vis_SelectionFilter *face_filter); + void OutlineSelection(); + signed int _44EC23(struct Polygon *a2, int *a3, signed int a4); + signed int _44ED0A(struct BLVFace *a2, int *a3, signed int a4); + bool AlterGamma_BLV(struct BLVFace *pFace, signed int *pColor); + bool AlterGamma_ODM(struct ODMFace *pFace, signed int *pColor); + bool draw_debug_outlines(); + bool _44EEA7(); + bool _44F07B(); + void ToggleFlags(unsigned int uMask); + void ToggleFlags2(unsigned int uFlag); + void _44F0FD(); + void PushStationaryLights(int a2); + void PrepareBloodsplats(); + void Deinitialize(); + void Loop(); + void DrawParticles(); + void Draw(); + + //----- (0042EB6A) -------------------------------------------------------- + struct stru6 *GetStru6() {return this->pStru6Instance;} + //----- (0042EB71) -------------------------------------------------------- + struct IndoorCameraD3D *GetIndoorCamera() {return this->pIndoorCameraD3D;} + + + //void ( ***vdestructor_ptr)(Game *, bool); + Game__StationaryLight pStationaryLights[25]; + char field_2C0[1092]; + unsigned int uNumStationaryLights; + Game_Bloodsplat pBloodsplats[20]; + int field_938; + int field_93C; + int field_940; + int field_944; + int field_948; + int field_94C; + int field_950; + int field_954; + int field_958; + int field_95C; + int field_960; + int field_964; + int field_968; + int field_96C; + int field_970; + Mouse *pMouse; + int field_978; + Game_stru0 stru_97C; + char field_98C[1148]; + int uNumBloodsplats; + int field_E0C; + __int64 field_E10; + int uNumStationaryLights_in_pStationaryLightsStack; + unsigned int bGammaControlInitialized; + unsigned int uFlags; + unsigned int uFlags2; + float fSaturation; + unsigned __int64 uSomeGammaStartTime; + __int64 uSomeGammaDeltaTime; + void/*ThreadWard*/ *pThreadWardInstance; + ParticleEngine *pParticleEngine; + Mouse *pMouseInstance; + LightmapBuilder *pLightmapBuilder; + Vis *pVisInstance; + stru6 *pStru6Instance; + IndoorCameraD3D *pIndoorCameraD3D; + stru9 *pStru9Instance; + stru10 *pStru10Instance; + void/*stru11*/ *pStru11Instance; + void/*stru12*/ *pStru12Instance; + void/*CShow*/ *pCShow; + Keyboard *pKeyboardInstance; + GammaController *pGammaController; + int field_E74; +}; +#pragma pack(pop) + + + + + + +extern Game *pGame; + +void sub_42FBDD(); +void CloseWindowBackground(); +void GameUI_MsgProc(); +void back_to_game(); +void GUI_MainMenuMessageProc(); + +void UpdateUserInput_and_MapSpecificStuff(); +void PrepareWorld(unsigned int _0_box_loading_1_fullscreen); +void DoPrepareWorld(unsigned int bLoading, int _1_fullscreen_loading_2_box); + +//int __stdcall aWinProc(HWND hWnd, UINT Msg, WPARAM wParam, unsigned int lParam); +int __stdcall InsertMM7CDDialogFunc(HWND hDlg, int a2, __int16 a3, int a4); +bool __fastcall FindMM7CD(HWND hWnd, char *pCDDrive); +//bool __fastcall Initialize(HINSTANCE hInst, char *pCmdLine); + +void Game_DeinitializeAndTerminate(int exitCode); // idb +void FinalInitialization(); +bool __fastcall CheckMM7CD(char c); +void SecondaryInitialization(); + + +void MM6_Initialize(const wchar_t *pIniFilename); +void MM7Initialization(); + +void __fastcall PrepareToLoadODM(unsigned int bLoading, struct ODMRenderParams *a2); +void MainMenu_Loop(); +unsigned int GameOverMenu(void *ecx0); +void ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows(); +void _461103_load_level_sub(); +void InitializeTurnBasedAnimations(void *); +void SetCurrentMenuID(enum MENU_STATE); // idb +enum MENU_STATE GetCurrentMenuID(); +unsigned int GetGravityStrength(); +void GameUI_StatusBar_UpdateTimedString(unsigned int bForceHide); // idb + +void __fastcall sub_44861E_set_texture(unsigned int uFaceCog, const char *pFilename); +void __fastcall sub_44892E_set_faces_bit(int sCogNumber, int bit, int on); +void __fastcall SetDecorationSprite(uint16_t uCog, bool bHide, const char *pFileName); // idb +void _494035_timed_effects__water_walking_damage__etc(); +void _493938_regenerate(); +void sub_491E3A(); +const char *GetReputationString(signed int a1); +unsigned int __fastcall _494820_training_time(unsigned int a1); +void LoadLevel_InitializeLevelStr(); +void OnMapLeave(); +void OnMapLoad(); +void Level_LoadEvtAndStr(const char *pLevelName); +void sub_4452BB(); +bool _44100D_should_alter_right_panel(); +void Transition_StopSound_Autosave(const char *pMapName, MapStartPoint point); // sub_44987B idb + +void __fastcall sub_4451A8_press_any_key(int a1, int a2, int a4); + +void OnTimer(int); +bool TeleportToNWCDungeon(); \ No newline at end of file