2020-12-21 13:16:29 -03:00
|
|
|
#pragma once
|
2021-08-30 17:50:32 +03:00
|
|
|
|
2021-09-08 18:31:35 +03:00
|
|
|
#include "Specific\phd_global.h"
|
2020-12-21 13:16:29 -03:00
|
|
|
#include "items.h"
|
|
|
|
#include "room.h"
|
2021-08-30 17:50:32 +03:00
|
|
|
#include "control\trigger.h"
|
2020-12-21 13:16:29 -03:00
|
|
|
|
|
|
|
struct BOUNDING_BOX;
|
2021-08-28 13:27:58 +02:00
|
|
|
struct ITEM_INFO;
|
|
|
|
struct COLL_INFO;
|
|
|
|
class FLOOR_INFO;
|
|
|
|
struct ANIM_STRUCT;
|
|
|
|
struct MESH_INFO;
|
|
|
|
struct ROOM_INFO;
|
2021-09-13 03:20:53 +03:00
|
|
|
|
2020-12-21 13:16:29 -03:00
|
|
|
enum GAME_STATUS
|
|
|
|
{
|
|
|
|
GAME_STATUS_NONE,
|
|
|
|
GAME_STATUS_NEW_GAME,
|
|
|
|
GAME_STATUS_LOAD_GAME,
|
|
|
|
GAME_STATUS_SAVE_GAME,
|
|
|
|
GAME_STATUS_EXIT_TO_TITLE,
|
|
|
|
GAME_STATUS_EXIT_GAME,
|
|
|
|
GAME_STATUS_LARA_DEAD,
|
|
|
|
GAME_STATUS_LEVEL_COMPLETED
|
|
|
|
};
|
|
|
|
|
|
|
|
enum HEADINGS
|
|
|
|
{
|
|
|
|
NORTH,
|
|
|
|
EAST,
|
|
|
|
SOUTH,
|
|
|
|
WEST
|
|
|
|
};
|
|
|
|
|
|
|
|
enum COMMAND_TYPES
|
|
|
|
{
|
|
|
|
COMMAND_NULL = 0,
|
|
|
|
COMMAND_MOVE_ORIGIN,
|
|
|
|
COMMAND_JUMP_VELOCITY,
|
|
|
|
COMMAND_ATTACK_READY,
|
|
|
|
COMMAND_DEACTIVATE,
|
|
|
|
COMMAND_SOUND_FX,
|
|
|
|
COMMAND_EFFECT
|
|
|
|
};
|
|
|
|
|
|
|
|
#define OUTSIDE_Z 64
|
|
|
|
#define OUTSIDE_SIZE 108
|
|
|
|
|
2021-09-15 22:43:19 +03:00
|
|
|
|
|
|
|
extern int GameTimer;
|
|
|
|
extern int RumbleTimer;
|
|
|
|
extern int InGameCounter;
|
|
|
|
extern short GlobalCounter;
|
|
|
|
extern int Wibble;
|
|
|
|
|
|
|
|
extern bool InitialiseGame;
|
|
|
|
extern bool DoTheGame;
|
|
|
|
extern bool JustLoaded;
|
|
|
|
extern bool ThreadEnded;
|
|
|
|
|
|
|
|
extern int RequiredStartPos;
|
|
|
|
extern int CurrentLevel;
|
|
|
|
extern int LevelComplete;
|
|
|
|
|
|
|
|
extern bool InItemControlLoop;
|
2020-12-21 13:16:29 -03:00
|
|
|
extern short ItemNewRoomNo;
|
|
|
|
extern short ItemNewRooms[512];
|
|
|
|
extern short NextItemActive;
|
|
|
|
extern short NextItemFree;
|
2021-09-15 22:43:19 +03:00
|
|
|
extern short NextFxActive;
|
|
|
|
extern short NextFxFree;
|
|
|
|
|
2021-09-15 21:09:09 +03:00
|
|
|
extern bool DisableLaraControl;
|
2021-09-15 22:43:19 +03:00
|
|
|
extern bool OldLaraBusy;
|
|
|
|
|
2020-12-21 13:16:29 -03:00
|
|
|
extern int WeatherType;
|
|
|
|
extern int LaraDrawType;
|
2021-09-15 22:43:19 +03:00
|
|
|
|
|
|
|
extern int WeaponDelay;
|
|
|
|
extern int WeaponEnemyTimer;
|
|
|
|
|
2021-05-26 01:58:30 -05:00
|
|
|
#ifndef NEW_INV
|
2020-12-21 13:16:29 -03:00
|
|
|
extern int LastInventoryItem;
|
2021-05-26 01:58:30 -05:00
|
|
|
#endif
|
2021-09-15 22:43:19 +03:00
|
|
|
|
2020-12-21 13:16:29 -03:00
|
|
|
extern std::vector<short> OutsideRoomTable[OUTSIDE_SIZE][OUTSIDE_SIZE];
|
|
|
|
extern short IsRoomOutsideNo;
|
|
|
|
|
|
|
|
GAME_STATUS DoTitle(int index);
|
2021-06-26 07:36:54 +02:00
|
|
|
GAME_STATUS DoLevel(int index, std::string ambient, bool loadFromSavegame);
|
2020-12-21 13:16:29 -03:00
|
|
|
GAME_STATUS ControlPhase(int numFrames, int demoMode);
|
2021-09-15 17:40:00 +03:00
|
|
|
|
|
|
|
int GetRandomControl();
|
|
|
|
int GetRandomDraw();
|
|
|
|
|
|
|
|
int GetChange(ITEM_INFO* item, ANIM_STRUCT* anim);
|
|
|
|
void AnimateItem(ITEM_INFO* item);
|
2020-12-21 13:16:29 -03:00
|
|
|
void TranslateItem(ITEM_INFO* item, int x, int y, int z);
|
|
|
|
void KillMoveItems();
|
|
|
|
void KillMoveEffects();
|
2021-09-15 17:40:00 +03:00
|
|
|
|
|
|
|
int IsObjectInRoom(short roomNumber, short objectNumber);
|
|
|
|
int IsRoomOutside(int x, int y, int z);
|
|
|
|
|
|
|
|
void RumbleScreen();
|
|
|
|
void RefreshCamera(short type, short* data);
|
|
|
|
|
|
|
|
void ResetGlobals();
|
|
|
|
|
|
|
|
void AnimateWaterfalls();
|
|
|
|
|
2020-12-21 13:16:29 -03:00
|
|
|
void AlterFloorHeight(ITEM_INFO* item, int height);
|
|
|
|
int GetFloorHeight(FLOOR_INFO* floor, int x, int y, int z);
|
|
|
|
FLOOR_INFO* GetFloor(int x, int y, int z, short* roomNumber);
|
|
|
|
int GetCeiling(FLOOR_INFO* floor, int x, int y, int z);
|
2021-09-15 17:40:00 +03:00
|
|
|
|
2020-12-21 13:16:29 -03:00
|
|
|
int ExplodeItemNode(ITEM_INFO* item, int Node, int NoXZVel, int bits);
|
2021-09-15 17:40:00 +03:00
|
|
|
|
|
|
|
int GetWaterSurface(int x, int y, int z, short roomNumber);
|
2020-12-21 13:16:29 -03:00
|
|
|
int GetWaterHeight(int x, int y, int z, short roomNumber);
|
2021-09-15 17:40:00 +03:00
|
|
|
|
2020-12-21 13:16:29 -03:00
|
|
|
|
2021-09-15 17:20:42 +03:00
|
|
|
unsigned CALLBACK GameMain(void*);
|