TombEngine/TombEngine/Game/control/control.h
Lwmte f4763bd4a2
Customize global hardcoded parameters (#1495)
* Initial commit

* Update CHANGELOG.md

* Tint flare smoke

* Expose GetCustomizations

* Added lensflare and flicker customization options for flare

* Update LensFlare.cpp

* Remove unnecessary code

* Update lara_flare.cpp

* Massive refactor to merge animations, settings and customizations

* Add HUD customization options

* Customize weapons

* Fixed flare, renamed recoil to interval, fixed lensflare default

* Occlude flare lensflares

* Update Settings.cpp

* Use alternate damage for lasersight mode

* Added hair cust

* Fix comment

* Fix another comment

* Fix link

* Fix placeholder table names

* Reorganize types

* Add missing initializers for hair settings

* Added physics cust

* Clarify description

* Update settings.lua

* Update CHANGELOG.md

* Add gun smoke, gun shells and ammo pickup counts

* Fix naming ambiguity

* Remove missing features from documentation

* Fix comment

* Fix parameter name, change default settings file

* Fixed pitch black

* Rollback DoDistanceFogForVertex

* Add camera cust

* Change binocular/lasersight toggle to color

* Update lara_basic.cpp

* Add time and statistics classes and script API for it

* Fix comment

* Use DoDamage on Lara helpers to register with statistics

* Update Time.cpp

* Fix documentation

* Fix default flare timeout

* Update Settings.lua

* Add flare muzzle offset customization

* Remove young Lara limitations

* Fix lasersight color

* Push full settings.lua

* Update RendererCompatibility.cpp

* Allow to customize root meshes, decopypaste hair and joint init code

* Added sol Time operator overloads

* Some changes to docs, add meaningful error for unknown fields

* Use existing new index template, add gunflash color settings, add shotgun muzzle

* Remove excessive usage of GetSettings()

* Cleanups

* Update Settings.lua

* Clarify parameter name

* Fix InitializeWeaponInfo

* PR review code tidying

* Fix bad merge

* Update FlowHandler.cpp

* Remove tabs for LDoc comments

* Use different comment style to preserve formatting

* Update lara_fire.cpp

* Some cleanups

* Fixed GetTimeUnits

* Fix typo

* Update Time.cpp

---------

Co-authored-by: Sezz <sezzary@outlook.com>
2024-12-15 18:24:49 +02:00

106 lines
1.9 KiB
C++

#pragma once
#include "Game/animation.h"
#include "Game/control/trigger.h"
#include "Game/items.h"
#include "Game/room.h"
#include "Math/Math.h"
class FloorInfo;
class GameBoundingBox;
struct AnimData;
struct CollisionInfo;
struct ItemInfo;
struct MESH_INFO;
struct ROOM_INFO;
enum class GameStatus
{
Normal,
NewGame,
HomeLevel,
LoadGame,
SaveGame,
ExitToTitle,
ExitGame,
LaraDead,
LevelComplete
};
enum class FreezeMode
{
None,
Full,
Spectator,
Player
};
enum CardinalDirection
{
NORTH,
EAST,
SOUTH,
WEST
};
enum FadeStatus
{
FADE_STATUS_NONE,
FADE_STATUS_FADEIN,
FADE_STATUS_FADEOUT
};
constexpr int MAX_ROOMS = 1024;
constexpr auto LOOP_FRAME_COUNT = 2;
extern int RumbleTimer;
extern int GlobalCounter;
extern bool InitializeGame;
extern bool DoTheGame;
extern bool JustLoaded;
extern bool ThreadEnded;
extern int RequiredStartPos;
extern int CurrentLevel;
extern int NextLevel;
extern bool InItemControlLoop;
extern short ItemNewRoomNo;
extern short ItemNewRooms[MAX_ROOMS];
extern short NextItemActive;
extern short NextItemFree;
extern short NextFxActive;
extern short NextFxFree;
extern int ControlPhaseTime;
extern std::vector<short> OutsideRoomTable[OUTSIDE_SIZE][OUTSIDE_SIZE];
void DrawPhase(bool isTitle, float interpolationFactor);
GameStatus ControlPhase(bool insideMenu);
GameStatus DoLevel(int levelIndex, bool loadGame = false);
GameStatus DoGameLoop(int levelIndex);
void EndGameLoop(int levelIndex, GameStatus reason);
GameStatus HandleMenuCalls(bool isTitle);
GameStatus HandleGlobalInputEvents(bool isTitle);
void HandleControls(bool isTitle);
int GetRandomControl();
int GetRandomDraw();
void KillMoveItems();
void KillMoveEffects();
void UpdateShatters();
void CleanUp();
void InitializeOrLoadGame(bool loadGame);
void InitializeScripting(int levelIndex, bool loadGame);
void DeInitializeScripting(int levelIndex, GameStatus reason);
void SetupInterpolation();
unsigned CALLBACK GameMain(void*);