fix inventory drawing; implement inventory in game code;

This commit is contained in:
Trxye 2021-05-20 14:19:11 -05:00
parent 6074ab93a2
commit d7fa758df7
17 changed files with 416 additions and 82 deletions

View file

@ -40,7 +40,9 @@
using std::function;
using T5M::Renderer::g_Renderer;
#ifndef NEW_INV
extern Inventory g_Inventory;
#endif
short Elevation = 57346;
extern short FXType;

View file

@ -195,7 +195,9 @@ void LaraCheatGetStuff()
Lara.Weapons[WEAPON_CROSSBOW].Ammo[WEAPON_AMMO3].setInfinite(true);
}
#ifndef NEW_INV
g_Inventory.LoadObjects(false);
#endif
}
void DelsGiveLaraItemsCheat()
@ -224,7 +226,8 @@ void DelsGiveLaraItemsCheat()
Lara.PickupsCombo[2 * i + 1] = false;
}
#ifndef NEW_INV
g_Inventory.LoadObjects(false);
#endif
/* Hardcoded code */
}

View file

@ -169,7 +169,9 @@ short IsRoomOutsideNo;
extern GameFlow *g_GameFlow;
extern GameScript *g_GameScript;
#ifndef NEW_INV
extern Inventory g_Inventory;
#endif
extern int SplashCount;
extern short FXType;
extern vector<AudioTrack> g_AudioTracks;
@ -829,8 +831,14 @@ GAME_STATUS DoLevel(int index, int ambient, bool loadFromSavegame)
LastInventoryItem = -1;
DelCutSeqPlayer = 0;
#ifdef NEW_INV
GLOBAL_inventoryitemchosen = NO_ITEM;
GLOBAL_enterinventory = NO_ITEM;
#else
g_Inventory.SetEnterObject(NO_ITEM);
g_Inventory.SetSelectedObject(NO_ITEM);
#endif
// Initialise flyby cameras
InitSpotCamSequences();

View file

@ -13,6 +13,9 @@
#include "input.h"
#include "sound.h"
#include "trmath.h"
#ifdef NEW_INV
#include "newinv2.h"
#endif
PHD_VECTOR DoubleDoorPos(0, 0, 220);
PHD_VECTOR PullDoorPos(-201, 0, 322);
@ -45,7 +48,9 @@ extern byte SequenceResults[3][3][3];
extern byte Sequences[3];
extern byte CurrentSequence;
extern PHD_VECTOR OldPickupPos;
#ifndef NEW_INV
extern Inventory g_Inventory;
#endif
void SequenceDoorControl(short itemNumber)
{
@ -331,7 +336,13 @@ void DoorCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
if (item->triggerFlags == 2
&& item->status == ITEM_NOT_ACTIVE && !item->gravityStatus // CHECK
&& ((TrInput & IN_ACTION || g_Inventory.GetSelectedObject() == ID_CROWBAR_ITEM)
&& ((TrInput & IN_ACTION ||
#ifdef NEW_INV
GLOBAL_inventoryitemchosen == ID_CROWBAR_ITEM
#else
g_Inventory.GetSelectedObject() == ID_CROWBAR_ITEM
#endif
)
&& l->currentAnimState == LS_STOP
&& l->animNumber == LA_STAND_IDLE
&& !l->hitStatus
@ -343,13 +354,25 @@ void DoorCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
{
if (!Lara.isMoving)
{
#ifdef NEW_INV
if (GLOBAL_inventoryitemchosen == NO_ITEM)
#else
if (g_Inventory.GetSelectedObject() == NO_ITEM)
#endif
{
#ifdef NEW_INV
if (have_i_got_object(ID_CROWBAR_ITEM))
{
GLOBAL_enterinventory = ID_CROWBAR_ITEM;
item->pos.yRot ^= ANGLE(180);
}
#else
if (g_Inventory.IsObjectPresentInInventory(ID_CROWBAR_ITEM))
{
g_Inventory.SetEnterObject(ID_CROWBAR_ITEM);
item->pos.yRot ^= ANGLE(180);
}
#endif
else
{
if (OldPickupPos.x != l->pos.xPos || OldPickupPos.y != l->pos.yPos || OldPickupPos.z != l->pos.zPos)
@ -363,14 +386,21 @@ void DoorCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
}
return;
}
#ifdef NEW_INV
if (GLOBAL_inventoryitemchosen != ID_CROWBAR_ITEM)
#else
if (g_Inventory.GetSelectedObject() != ID_CROWBAR_ITEM)
#endif
{
item->pos.yRot ^= ANGLE(180);
return;
}
}
#ifdef NEW_INV
GLOBAL_inventoryitemchosen = NO_ITEM;
#else
g_Inventory.SetSelectedObject(NO_ITEM);
#endif
if (MoveLaraPosition(&CrowbarDoorPos, item, l))
{
l->animNumber = LA_DOOR_OPEN_CROWBAR;

View file

@ -84,7 +84,6 @@ static char Stashedcurrent_selected_option;
static char StashedCurrentHKAmmoType;
static char StashedCurrentHarpoonAmmoType;
static char StashedCurrentRocketAmmoType;
int GLOBAL_inventoryitemchosen = NO_ITEM;
int GLOBAL_enterinventory = NO_ITEM;
int GLOBAL_lastinvitem = NO_ITEM;
@ -95,9 +94,10 @@ char combine_type_flag;
short combine_obj1;
short combine_obj2;
short examine_mode = 0;
short stats_mode = 0;
short inventry_xpos = 0;
short inventry_ypos = 0;
bool stats_mode = 0;
bool stop_killing_me_you_dumb_input_system;
bool stop_killing_me_you_dumb_input_system2;
int compassNeedleAngle;
uhmG current_options[3];
@ -119,10 +119,10 @@ short optmessages[] =
};
#define phd_winxmax g_Configuration.Width
#define phd_winymax CurrentSettings.conf.Height
#define phd_winymax g_Configuration.Height
#define phd_centerx 400
#define phd_centery phd_winymax / 2
#define max_combines 24//update this if you add anything to the combine table otherwise it wont work since the relative functions use it!
#define max_combines 23//update this if you add anything to the combine table otherwise it wont work since the relative functions use it!
COMBINELIST combine_table[max_combines] =
{
@ -198,12 +198,13 @@ INVOBJ inventry_objects_list[INVENTORY_TABLE_SIZE] =
{ID_SMALLMEDI_ITEM, 0, 512, 0, 20480, 0, 2, STRING_SMALL_MEDIPACK, -1},
{ID_BINOCULARS_ITEM, -1, 700, 4096, 2000, 0, 2, STRING_BINOCULARS, -1},
{ID_FLARE_INV_ITEM, 2, 1100, 16384, 0, 0, 2, STRING_FLARES, -1},
{ID_COMPASS_ITEM, 2, 1100, 32768, 0, 0, 2, STRING_TIMEX, -1},
{ID_INVENTORY_PASSPORT, 52, 2200, 32768, 0, 0, 2, STRING_LOAD_GAME, -1},
{ID_INVENTORY_PASSPORT, 52, 2200, 32768, 0, 0, 2, STRING_SAVE_GAME, -1},
{ID_TIMEX_ITEM, 2, 1100, 32768, 0, 0, 2, STRING_TIMEX, -1},
{PC_LOAD_INV_ITEM, 52, 2200, 32768, 0, 0, 2, STRING_LOAD_GAME, -1},
{PC_LOAD_SAVE_ITEM, 52, 2200, 32768, 0, 0, 2, STRING_SAVE_GAME, -1},
{ID_BURNING_TORCH_ITEM, 14, 1200, 0, 16384, 0, 2, STRING_LOAD_GAME, -1},
{ID_CROWBAR_ITEM, 4, 1900, 0, 16384, 0, 2, STRING_CROWBAR, -1},
{ID_DIARY_ITEM, 0, 0, 0, 0, 0, 2, STRING_DIARY, -1},
{ID_COMPASS_ITEM, 0x0FFF2, 0x258, 0, 0x36B0, 0, 0, STRING_LOAD_GAME, -1},
//puzzles
@ -337,12 +338,13 @@ unsigned short options_table[] =
OPT_USE, //small med
OPT_USE, //binocs
OPT_USE, //flares
OPT_STATS, //compass/timex
OPT_STATS, //timex
OPT_LOAD, //load floppy
OPT_SAVE, //save floppy
OPT_USE, //torch?
OPT_USE, //crowbar
OPT_USE, //diary
0, //compass
//puzzles
OPT_USE,
@ -510,20 +512,22 @@ void do_debounced_input()
dbSelect = 1;
else
{
if (dbSelect == 1)
if (dbSelect == 1 && !stop_killing_me_you_dumb_input_system)
goSelect = 1;
dbSelect = 0;
stop_killing_me_you_dumb_input_system = 0;
}
if ((TrInput & IN_DESELECT))
dbDeselect = 1;
else
{
if (dbDeselect == 1)
if (dbDeselect == 1 && !stop_killing_me_you_dumb_input_system2)
goDeselect = 1;
dbDeselect = 0;
stop_killing_me_you_dumb_input_system2 = 0;
}
}
@ -1819,7 +1823,7 @@ void seperate_object(short obj)
void setup_objectlist_startposition(short newobj)
{
for (int i = 0; i < 100; i++)
for (int i = 0; i < INVENTORY_TABLE_SIZE; i++)
if (rings[RING_INVENTORY]->current_object_list[i].invitem == newobj)
rings[RING_INVENTORY]->curobjinlist = i;
}
@ -1859,26 +1863,26 @@ void setup_ammo_selector()
{
ammo_object_list[0].invitem = INV_OBJECT_UZI_AMMO;
ammo_object_list[0].amount = AmountUziAmmo;
num = 1;
num_ammo_slots = 1;
num++;
num_ammo_slots = num;
current_ammo_type = &CurrentUziAmmoType;
}
if (opts & OPT_CHOOSEAMMO_PISTOLS)
{
num = 1;
num++;
ammo_object_list[0].invitem = INV_OBJECT_PISTOLS_AMMO;
ammo_object_list[0].amount = -1;
num_ammo_slots = 1;
num_ammo_slots = num;
current_ammo_type = &CurrentPistolsAmmoType;
}
if (opts & OPT_CHOOSEAMMO_REVOLVER)
{
num = 1;
num++;
ammo_object_list[0].invitem = INV_OBJECT_REVOLVER_AMMO;
ammo_object_list[0].amount = AmountRevolverAmmo;
num_ammo_slots = 1;
num_ammo_slots = num;
current_ammo_type = &CurrentRevolverAmmoType;
}
@ -1902,8 +1906,8 @@ void setup_ammo_selector()
current_ammo_type = &CurrentHKAmmoType;
ammo_object_list[num].invitem = INV_OBJECT_HK_AMMO;
ammo_object_list[num].amount = AmountHKAmmo1;
num = 1;
num_ammo_slots = 1;
num++;
num_ammo_slots = num;
}
if (opts & OPT_CHOOSEAMMO_SHOTGUN)
@ -1938,8 +1942,8 @@ void setup_ammo_selector()
current_ammo_type = &CurrentHarpoonAmmoType;
ammo_object_list[num].invitem = INV_OBJECT_HARPOON_AMMO;
ammo_object_list[num].amount = AmountHarpoonAmmo;
num = 1;
num_ammo_slots = 1;
num++;
num_ammo_slots = num;
}
if (opts & OPT_CHOOSEAMMO_ROCKET)
@ -1947,8 +1951,8 @@ void setup_ammo_selector()
current_ammo_type = &CurrentRocketAmmoType;
ammo_object_list[num].invitem = INV_OBJECT_ROCKET_AMMO;
ammo_object_list[num].amount = AmountRocketsAmmo;
num = 1;
num_ammo_slots = 1;
num++;
num_ammo_slots = num;
}
}
}
@ -2106,7 +2110,7 @@ void construct_object_list()
insert_object_into_list(INV_OBJECT_FLARES);
}
insert_object_into_list(INV_OBJECT_COMPASS);//every level has a compass? what's a good way to check?!
insert_object_into_list(INV_OBJECT_TIMEX);//every level has the timex? what's a good way to check?!
if (Lara.NumSmallMedipacks)
insert_object_into_list(INV_OBJECT_SMALL_MEDIPACK);
@ -2172,8 +2176,8 @@ void construct_combine_object_list()
{
rings[RING_AMMO]->numobjectsinlist = 0;
for (int i = 0; i < 100; i++)
rings[RING_AMMO]->current_object_list[i].invitem = -1;
for (int i = 0; i < INVENTORY_TABLE_SIZE; i++)
rings[RING_AMMO]->current_object_list[i].invitem = NO_ITEM;
if (!(g_GameFlow->GetLevel(CurrentLevel)->LaraType == LARA_YOUNG))
{
@ -2222,6 +2226,7 @@ void construct_combine_object_list()
void init_inventry()
{
compassNeedleAngle = 4096;
examine_mode = 0;
stats_mode = 0;
AlterFOV(14560);
@ -2289,22 +2294,22 @@ void init_inventry()
int have_i_got_object(short object_number)
{
if (object_number >= ID_PUZZLE_ITEM1_COMBO1 && object_number <= ID_PUZZLE_ITEM8_COMBO2)
return Lara.PuzzlesCombo[object_number];
return Lara.PuzzlesCombo[object_number - ID_PUZZLE_ITEM1_COMBO1];
if (object_number >= ID_PUZZLE_ITEM1 && object_number <= ID_PUZZLE_ITEM8)
return Lara.Puzzles[object_number];
return Lara.Puzzles[object_number - ID_PUZZLE_ITEM1];
if (object_number >= ID_KEY_ITEM1_COMBO1 && object_number <= ID_KEY_ITEM8_COMBO2)
return Lara.KeysCombo[object_number];
return Lara.KeysCombo[object_number - ID_KEY_ITEM1_COMBO1];
if (object_number >= ID_KEY_ITEM1 && object_number <= ID_KEY_ITEM8)
return Lara.Keys[object_number];
return Lara.Keys[object_number - ID_KEY_ITEM1];
if (object_number >= ID_PICKUP_ITEM1_COMBO1 && object_number <= ID_PICKUP_ITEM4_COMBO2)
return Lara.PickupsCombo[object_number];
return Lara.PickupsCombo[object_number - ID_PICKUP_ITEM1_COMBO1];
if (object_number >= ID_PICKUP_ITEM1 && object_number <= ID_PICKUP_ITEM4)
return Lara.Pickups[object_number];
return Lara.Pickups[object_number - ID_PICKUP_ITEM1];
if (object_number == ID_CROWBAR_ITEM)
return Lara.Crowbar;
@ -2314,7 +2319,7 @@ int have_i_got_object(short object_number)
void setup_objectlist_startposition2(short newobj)
{
for (int i = 0; i < 100; i++)
for (int i = 0; i < INVENTORY_TABLE_SIZE; i++)
if (inventry_objects_list[rings[RING_INVENTORY]->current_object_list[i].invitem].object_number == newobj)
rings[RING_INVENTORY]->curobjinlist = i;
}
@ -2753,7 +2758,7 @@ void handle_inventry_menu()
current_options[1].text = g_GameFlow->GetString(inventry_objects_list[ammo_object_list[1].invitem].objname);
n = 2;
if ((options_table[rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->curobjinlist].invitem] & 0x100))
if ((options_table[rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->curobjinlist].invitem] & (OPT_CHOOSEAMMO_CROSSBOW | OPT_CHOOSEAMMO_GRENADEGUN)))
{
n = 3;
current_options[2].type = 8;
@ -3017,32 +3022,34 @@ void draw_ammo_selector()
yrot = ammo_object_list[n].yrot;
x = phd_centerx - 300 + xpos;
y = 600;
y = 430;
short obj = convert_invobj_to_obj(ammo_object_list[n].invitem);
if (n == current_ammo_type[0])
{
if (ammo_object_list[n].amount == -1)
sprintf(&invTextBuffer[0], "unlimited", g_GameFlow->GetString(inventry_objects_list[ammo_object_list[n].invitem].objname));
sprintf(&invTextBuffer[0], "unlimited %s", g_GameFlow->GetString(inventry_objects_list[ammo_object_list[n].invitem].objname));
else
sprintf(&invTextBuffer[0], "%d x %s", ammo_object_list[n].amount, g_GameFlow->GetString(inventry_objects_list[ammo_object_list[n].invitem].objname));
if (ammo_selector_fade_val)
g_Renderer.drawString(phd_centerx, 280, &invTextBuffer[0], PRINTSTRING_COLOR_YELLOW, PRINTSTRING_CENTER);
g_Renderer.drawString(phd_centerx, 380, &invTextBuffer[0], PRINTSTRING_COLOR_YELLOW, PRINTSTRING_CENTER);
// PrintString(phd_centerx, font_height + phd_centery + 2 * font_height - 9, 8, &invTextBuffer[0], FF_CENTER);
if (n == current_ammo_type[0])
//g_Renderer.drawObjectOn2DPosition(x, y, ammo_object_list[n].invitem, ammo_selector_fade_val, 0, yrot, 0, 0, 0);
g_Renderer.drawObjectOn2DPosition(x, y, ammo_object_list[n].invitem, 0, yrot, 0);
g_Renderer.drawObjectOn2DPosition(x, y, obj, 0, yrot, 0);
else
//DrawThreeDeeObject2D(x, y, ammo_object_list[n].invitem, ammo_selector_fade_val, 0, yrot, 0, 1, 0);
g_Renderer.drawObjectOn2DPosition(x, y, ammo_object_list[n].invitem, 0, yrot, 0);
g_Renderer.drawObjectOn2DPosition(x, y, obj, 0, yrot, 0);
//drawObjectOn2DPosition
//DrawThreeDeeObject2D(int x, int y, int num, int shade, int xrot, int yrot, int zrot, int bright, int overlay)
}
else
g_Renderer.drawObjectOn2DPosition(x, y, ammo_object_list[n].invitem, 0, yrot, 0);
g_Renderer.drawObjectOn2DPosition(x, y, obj, 0, yrot, 0);
// else
// DrawThreeDeeObject2D(x, y, ammo_object_list[n].invitem, ammo_selector_fade_val, 0, yrot, 0, 1, 0);
@ -3323,7 +3330,7 @@ void draw_current_object_list(int ringnum)
if (nummeup)
{
if (nummeup == -1)
sprintf(textbufme, "unlimited", g_GameFlow->GetString(inventry_objects_list[rings[ringnum]->current_object_list[n].invitem].objname));
sprintf(textbufme, "unlimited %s", g_GameFlow->GetString(inventry_objects_list[rings[ringnum]->current_object_list[n].invitem].objname));
else
sprintf(textbufme, "%d x %s", nummeup, g_GameFlow->GetString(inventry_objects_list[rings[ringnum]->current_object_list[n].invitem].objname));
}
@ -3384,10 +3391,10 @@ void draw_current_object_list(int ringnum)
int x, y;
x = 400 + xoff + i * OBJLIST_SPACING;
y = 250;
g_Renderer.drawObjectOn2DPosition(x, y, rings[ringnum]->current_object_list[n].invitem, 0, yrot, 0);
y = 150;
short obj = convert_invobj_to_obj(rings[ringnum]->current_object_list[n].invitem);
short scaler = inventry_objects_list[rings[ringnum]->current_object_list[n].invitem].scale1;
g_Renderer.drawObjectOn2DPosition(x, y, obj, 0, yrot, 0);
/* DrawThreeDeeObject2D((int)((phd_centerx * 0.00390625 * 256.0 + inventry_xpos) + xoff + i * OBJLIST_SPACING),
(int)(phd_centery * 0.0083333338 * ymeup + inventry_ypos),
@ -3469,10 +3476,10 @@ int S_CallInventory2()
{
int return_value;
OldLaraBusy = Lara.busy != 0;
OldLaraBusy = Lara.busy;
/* if (TrInput & IN_SELECT)
friggrimmer = 1;*/
if (TrInput & IN_SELECT)
stop_killing_me_you_dumb_input_system = 1;
rings[RING_INVENTORY] = &pcring1;
rings[RING_AMMO] = &pcring2;
@ -3486,6 +3493,10 @@ int S_CallInventory2()
int val = 0;
OBJLIST_SPACING = phd_centerx >> 1;
if (compassNeedleAngle != 1024)
compassNeedleAngle -= 32;
SetDebounce = 1;
S_UpdateInput();
TrInput = InputBusy;
@ -3507,9 +3518,10 @@ int S_CallInventory2()
/* if (examine_mode)
do_examine_mode();
else if (stats_mode)
do_stats_mode();
else*/
if (stats_mode)
do_stats_mode();
// else
{
DrawInv();
/* draw_current_object_list(RING_INVENTORY);
@ -3531,6 +3543,8 @@ int S_CallInventory2()
if (loading_or_saving)
{
loading_or_saving = 0;//fix meeeeeeeeeeeee
stop_killing_me_you_dumb_input_system2 = 1;
stop_killing_me_you_dumb_input_system = 1;
/* do
{
S_InitialisePolyList();
@ -3552,8 +3566,8 @@ int S_CallInventory2()
val = 1;
}
friggrimmer2 = 1;
friggrimmer = 1;
stop_killing_me_you_dumb_input_system2 = 1;
stop_killing_me_you_dumb_input_system = 1;
deselect_debounce = 0;
go_deselect = 0;
loading_or_saving = 0;*/
@ -3570,7 +3584,7 @@ int S_CallInventory2()
if (useItem)
use_current_item();
Lara.busy = OldLaraBusy & 1;
Lara.busy = OldLaraBusy;
GLOBAL_invMode = IM_NONE;
/* if (GLOBAL_invkeypadmode)
@ -3598,7 +3612,24 @@ int S_CallInventory2()
return return_value;
}
void do_stats_mode()
{
GLOBAL_invMode = IM_STATS;
if (goDeselect)
{
GLOBAL_invMode = IM_NONE;
stats_mode = 0;
}
}
void draw_compass()
{
g_Renderer.drawObjectOn2DPosition(130, 480, ID_COMPASS_ITEM, ANGLE(90), 0, ANGLE(180));
short compass_speed = phd_sin(compassNeedleAngle - LaraItem->pos.yRot);
short compass_angle = (LaraItem->pos.yRot + compass_speed) - 32768;
Matrix::CreateRotationY(compass_angle);
}

View file

@ -43,6 +43,8 @@ void draw_ammo_selector();
void spinback(unsigned short* angle);
void update_laras_weapons_status();
int S_CallInventory2();
void do_stats_mode();
void draw_compass();
void combine_revolver_lasersight(int flag);
void combine_crossbow_lasersight(int flag);
void combine_HK_SILENCER(int flag);
@ -67,6 +69,7 @@ void combine_PickupItem2(int flag);
void combine_PickupItem3(int flag);
void combine_PickupItem4(int flag);
// Inventory results
#define INV_RESULT_NONE 0
#define INV_RESULT_USE_ITEM 1
@ -149,12 +152,13 @@ enum inv_objects
INV_OBJECT_SMALL_MEDIPACK,
INV_OBJECT_BINOCULARS,
INV_OBJECT_FLARES,
INV_OBJECT_COMPASS,
INV_OBJECT_TIMEX,
INV_OBJECT_LOAD_FLOPPY,
INV_OBJECT_SAVE_FLOPPY,
INV_OBJECT_BRUNING_TORCH,
INV_OBJECT_CROWBAR,
INV_OBJECT_DIARY,
INV_OBJECT_COMPASS,
// Puzzle, keys, pickups, examines
INV_OBJECT_PUZZLE1,
@ -247,7 +251,8 @@ enum inv_modes
{
IM_NONE,
IM_INGAME,
IM_PAUSE
IM_PAUSE,
IM_STATS
};
typedef struct titleSettings
@ -321,6 +326,8 @@ extern int GLOBAL_invMode;
extern bool pauseMenu;
extern int pause_menu_to_display;
extern __int64 pause_selected_option;
extern int GLOBAL_inventoryitemchosen;
extern int GLOBAL_lastinvitem;
extern int GLOBAL_enterinventory;
extern RINGME pcring1;//items ring
extern RINGME pcring2;//other ring

View file

@ -24,6 +24,9 @@
#include "input.h"
#include "sound.h"
#include "savegame.h"
#ifdef NEW_INV
#include "newinv2.h"
#endif
OBJECT_COLLISION_BOUNDS PickUpBounds = // offset 0xA1338
{
@ -90,7 +93,9 @@ short RPickups[16];
short pickupitem;
PHD_VECTOR OldPickupPos;
extern int KeyTriggerActive;
#ifndef NEW_INV
extern Inventory g_Inventory;
#endif
static bool SilencerIsEquiped()
{
@ -351,8 +356,9 @@ void PickedUpObject(short objectNumber)
Lara.ExaminesCombo[objectNumber - ID_EXAMINE1_COMBO1] = 1;
break;
}
#ifndef NEW_INV
g_Inventory.LoadObjects(false);
#endif
}
void RemoveObjectFromInventory(short objectNumber, int count)
@ -381,7 +387,9 @@ void RemoveObjectFromInventory(short objectNumber, int count)
else if (objectNumber >= ID_EXAMINE1_COMBO1 && objectNumber <= ID_EXAMINE3_COMBO2)
Lara.PickupsCombo[objectNumber - ID_EXAMINE1_COMBO1] = 0;
#ifndef NEW_INV
g_Inventory.LoadObjects(false);
#endif
}
void CollectCarriedItems(ITEM_INFO* item)
@ -600,7 +608,13 @@ void PickupCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
return;
}
if (!(TrInput & IN_ACTION) && (g_Inventory.GetSelectedObject() == NO_ITEM || triggerFlags != 2)
if (!(TrInput & IN_ACTION) && (
#ifdef NEW_INV
GLOBAL_inventoryitemchosen == NO_ITEM
#else
g_Inventory.GetSelectedObject() == NO_ITEM
#endif
|| triggerFlags != 2)
|| BinocularRange
|| (l->currentAnimState != LS_STOP || l->animNumber != LA_STAND_IDLE || Lara.gunStatus)
&& (l->currentAnimState != LS_CROUCH_IDLE || l->animNumber != LA_CROUCH_IDLE || Lara.gunStatus)
@ -692,8 +706,28 @@ void PickupCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
item->pos.zRot = oldZrot;
return;
}
if (!Lara.isMoving)
if (!Lara.isMoving)//TROYE INVENTORY FIX ME PLEASE
{
#ifdef NEW_INV
if (GLOBAL_inventoryitemchosen == NO_ITEM)
{
if (have_i_got_object(ID_CROWBAR_ITEM))
GLOBAL_enterinventory = ID_CROWBAR_ITEM;
item->pos.xRot = oldXrot;
item->pos.yRot = oldYrot;
item->pos.zRot = oldZrot;
return;
}
if (GLOBAL_inventoryitemchosen != ID_CROWBAR_ITEM)
{
item->pos.xRot = oldXrot;
item->pos.yRot = oldYrot;
item->pos.zRot = oldZrot;
return;
}
#else
if (g_Inventory.GetSelectedObject() == NO_ITEM)
{
if (g_Inventory.IsObjectPresentInInventory(ID_CROWBAR_ITEM))
@ -703,6 +737,7 @@ void PickupCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
item->pos.zRot = oldZrot;
return;
}
if (g_Inventory.GetSelectedObject() != ID_CROWBAR_ITEM)
{
item->pos.xRot = oldXrot;
@ -710,7 +745,9 @@ void PickupCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
item->pos.zRot = oldZrot;
return;
}
g_Inventory.SetSelectedObject(NO_ITEM);
#endif
}
if (MoveLaraPosition(&CrowbarPickUpPosition, item, l))
{
@ -1337,7 +1374,11 @@ int UseSpecialItem(ITEM_INFO* item) // to pickup.cpp?
item->currentAnimState = LS_MISC_CONTROL;
Lara.gunStatus = LG_HANDS_BUSY;
#ifdef NEW_INV
GLOBAL_inventoryitemchosen = NO_ITEM;
#else
g_Inventory.SetSelectedObject(NO_ITEM);
#endif
return true;
}

View file

@ -7,6 +7,10 @@
#include "pickup.h"
#include "draw.h"
#include "puzzles_keys.h"
#ifdef NEW_INV
#include "newinv2.h"
#endif
/*vars*/
short puzzleItem;
/*bounds*/
@ -41,7 +45,13 @@ void PuzzleHoleCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
else
flag = 1;
if (!((TrInput & IN_ACTION || g_Inventory.GetSelectedObject() != NO_ITEM)
if (!((TrInput & IN_ACTION ||
#ifdef NEW_INV
GLOBAL_inventoryitemchosen != NO_ITEM
#else
g_Inventory.GetSelectedObject() != NO_ITEM
#endif
)
&& !BinocularRange
&& !Lara.gunStatus
&& l->currentAnimState == LS_STOP
@ -92,8 +102,24 @@ void PuzzleHoleCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
pos.y = 0;
pos.z = 0;
if (!Lara.isMoving)
if (!Lara.isMoving)//TROYE INVENTORY FIX ME
{
#ifdef NEW_INV
if (GLOBAL_inventoryitemchosen == NO_ITEM)
{
if (have_i_got_object(item->objectNumber - (ID_PUZZLE_HOLE1 - ID_PUZZLE_ITEM1)))
GLOBAL_enterinventory = item->objectNumber - (ID_PUZZLE_HOLE1 - ID_PUZZLE_ITEM1);
item->pos.yRot = oldYrot;
return;
}
if (GLOBAL_inventoryitemchosen != item->objectNumber - (ID_PUZZLE_HOLE1 - ID_PUZZLE_ITEM1))
{
item->pos.yRot = oldYrot;
return;
}
#else
if (g_Inventory.GetSelectedObject() == NO_ITEM)
{
if (g_Inventory.IsObjectPresentInInventory(item->objectNumber - (ID_PUZZLE_HOLE1 - ID_PUZZLE_ITEM1)))
@ -106,6 +132,7 @@ void PuzzleHoleCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
item->pos.yRot = oldYrot;
return;
}
#endif
}
pos.z = bounds->Z1 - 100;
@ -114,7 +141,11 @@ void PuzzleHoleCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
if (!MoveLaraPosition(&pos, item, l))
{
Lara.generalPtr = (void*)itemNum;
#ifdef NEW_INV
GLOBAL_inventoryitemchosen = NO_ITEM;
#else
g_Inventory.SetSelectedObject(NO_ITEM);
#endif
item->pos.yRot = oldYrot;
return;
}
@ -145,7 +176,11 @@ void PuzzleHoleCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
Lara.gunStatus = LG_HANDS_BUSY;
item->flags |= 0x20;
Lara.generalPtr = (void*)itemNum;
#ifdef NEW_INV
GLOBAL_inventoryitemchosen = NO_ITEM;
#else
g_Inventory.SetSelectedObject(NO_ITEM);
#endif
item->pos.yRot = oldYrot;
return;
}
@ -237,7 +272,12 @@ void KeyHoleCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
}
}
if ((!(TrInput & IN_ACTION) && g_Inventory.GetSelectedObject() == NO_ITEM
if ((!(TrInput & IN_ACTION) &&
#ifdef NEW_INV
GLOBAL_inventoryitemchosen == NO_ITEM
#else
g_Inventory.GetSelectedObject() == NO_ITEM
#endif
|| BinocularRange
|| Lara.gunStatus
|| l->currentAnimState != LS_STOP
@ -251,10 +291,21 @@ void KeyHoleCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
{
if (TestLaraPosition(&KeyHoleBounds, item, l))
{
if (!Lara.isMoving)
if (!Lara.isMoving)//TROYE INVENTORY FIX ME
{
if (item->status != ITEM_NOT_ACTIVE)
return;
#ifdef NEW_INV
if (GLOBAL_inventoryitemchosen == NO_ITEM)
{
if (have_i_got_object(item->objectNumber - (ID_KEY_HOLE1 - ID_KEY_ITEM1)))
GLOBAL_enterinventory = item->objectNumber - (ID_KEY_HOLE1 - ID_KEY_ITEM1);
return;
}
if (GLOBAL_inventoryitemchosen != item->objectNumber - (ID_KEY_HOLE1 - ID_KEY_ITEM1))
return;
#else
if (g_Inventory.GetSelectedObject() == NO_ITEM)
{
if (g_Inventory.IsObjectPresentInInventory(item->objectNumber - (ID_KEY_HOLE1 - ID_KEY_ITEM1)))
@ -263,6 +314,7 @@ void KeyHoleCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
}
if (g_Inventory.GetSelectedObject() != item->objectNumber - (ID_KEY_HOLE1 - ID_KEY_ITEM1))
return;
#endif
}
if (MoveLaraPosition(&KeyHolePosition, item, l))
@ -288,7 +340,11 @@ void KeyHoleCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
if (item->triggerFlags == 1 && item->objectNumber == ID_KEY_HOLE8)
{
item->itemFlags[3] = 92;
#ifdef NEW_INV
GLOBAL_inventoryitemchosen = NO_ITEM;
#else
g_Inventory.SetSelectedObject(NO_ITEM);
#endif
return;
}
}
@ -297,7 +353,11 @@ void KeyHoleCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
Lara.generalPtr = (void*)itemNum;
}
#ifdef NEW_INV
GLOBAL_inventoryitemchosen = NO_ITEM;
#else
g_Inventory.SetSelectedObject(NO_ITEM);
#endif
return;
}

View file

@ -13,6 +13,11 @@
#include "level.h"
#include "input.h"
#include "sound.h"
#ifdef NEW_INV
#include "newinv2.h"
#endif
byte SequenceUsed[6];
byte SequenceResults[3][3][3];
@ -21,8 +26,9 @@ byte CurrentSequence;
int PulleyItemNumber = NO_ITEM;
extern PHD_VECTOR OldPickupPos;
#ifndef NEW_INV
extern Inventory g_Inventory;
#endif
static PHD_VECTOR CogSwitchPos(0, 0, -856);
OBJECT_COLLISION_BOUNDS CogSwitchBounds =
{
@ -288,7 +294,12 @@ void CrowbarSwitchCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
int doSwitch = 0;
ITEM_INFO* item = &g_Level.Items[itemNum];
if ((!(TrInput & IN_ACTION) && g_Inventory.GetSelectedObject() != ID_CROWBAR_ITEM
if ((!(TrInput & IN_ACTION) &&
#ifdef NEW_INV
GLOBAL_inventoryitemchosen != ID_CROWBAR_ITEM
#else
g_Inventory.GetSelectedObject() != ID_CROWBAR_ITEM
#endif
|| l->currentAnimState != LS_STOP
|| l->animNumber != LA_STAND_IDLE
|| Lara.gunStatus
@ -310,7 +321,13 @@ void CrowbarSwitchCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
l->pos.yRot ^= (short)ANGLE(180);
if (TestLaraPosition(&CrowbarBounds2, item, l))
{
if (Lara.isMoving || g_Inventory.GetSelectedObject() == ID_CROWBAR_ITEM)
if (Lara.isMoving ||
#ifdef NEW_INV
GLOBAL_inventoryitemchosen == ID_CROWBAR_ITEM
#else
g_Inventory.GetSelectedObject() == ID_CROWBAR_ITEM
#endif
)
{
if (MoveLaraPosition(&CrowbarPos2, item, l))
{
@ -323,7 +340,11 @@ void CrowbarSwitchCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
{
Lara.generalPtr = (void*)itemNum;
}
#ifdef NEW_INV
GLOBAL_inventoryitemchosen = NO_ITEM;
#else
g_Inventory.SetSelectedObject(NO_ITEM);
#endif
}
else
{
@ -350,10 +371,20 @@ void CrowbarSwitchCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
return;
}
if (!(Lara.isMoving && g_Inventory.GetSelectedObject() != ID_CROWBAR_ITEM))
if (!(Lara.isMoving &&
#ifdef NEW_INV
GLOBAL_inventoryitemchosen != ID_CROWBAR_ITEM)
#else
g_Inventory.GetSelectedObject() != ID_CROWBAR_ITEM)
#endif
)
{
if (Lara.Crowbar)
#ifdef NEW_INV
GLOBAL_inventoryitemchosen = ID_CROWBAR_ITEM;
#else
g_Inventory.SetEnterObject(ID_CROWBAR_ITEM);
#endif
else
{
if (OldPickupPos.x != l->pos.xPos || OldPickupPos.y != l->pos.yPos || OldPickupPos.z != l->pos.zPos)
@ -378,8 +409,11 @@ void CrowbarSwitchCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
{
Lara.generalPtr = (void*)itemNum;
}
#ifdef NEW_INV
GLOBAL_inventoryitemchosen = NO_ITEM;
#else
g_Inventory.SetSelectedObject(NO_ITEM);
#endif
}
if (!doSwitch)
@ -407,7 +441,11 @@ void CrowbarSwitchCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
}
if (Lara.Crowbar)
#ifdef NEW_INV
GLOBAL_enterinventory = ID_CROWBAR_ITEM;
#else
g_Inventory.SetEnterObject(ID_CROWBAR_ITEM);
#endif
else
{
if (OldPickupPos.x != l->pos.xPos || OldPickupPos.y != l->pos.yPos || OldPickupPos.z != l->pos.zPos)

View file

@ -13,7 +13,9 @@
#include "trmath.h"
#include "objectslist.h"
#ifndef NEW_INV
extern Inventory g_Inventory;
#endif
BITE_INFO sentryGunBite = { 0, 0, 0, 8 };
static void SentryGunThrowFire(ITEM_INFO* item)

View file

@ -15,6 +15,9 @@
#include "sound.h"
#include "setup.h"
#include "level.h"
#ifdef NEW_INV
#include "newinv2.h"
#endif
using std::vector;
@ -110,7 +113,9 @@ short Unk_0080DE1A;
int Unk_0080DDE8;
short Unk_0080DE24;
#ifndef NEW_INV
extern Inventory g_Inventory;
#endif
static int TestJeepHeight(ITEM_INFO* item, int dz, int dx, PHD_VECTOR* pos)
{
@ -424,7 +429,13 @@ static int GetOnJeep(int itemNumber)
{
ITEM_INFO* item = &g_Level.Items[itemNumber];
if (!(TrInput & IN_ACTION) && g_Inventory.GetSelectedObject() != ID_PUZZLE_ITEM1)
if (!(TrInput & IN_ACTION) &&
#ifdef NEW_INV
GLOBAL_inventoryitemchosen != ID_PUZZLE_ITEM1
#else
g_Inventory.GetSelectedObject() != ID_PUZZLE_ITEM1
#endif
)
return 0;
if (item->flags & 0x100)
@ -461,6 +472,20 @@ static int GetOnJeep(int itemNumber)
int tempAngle = LaraItem->pos.yRot - item->pos.yRot;
if (tempAngle > ANGLE(45) && tempAngle < ANGLE(135))
{
#ifdef NEW_INV
if (GLOBAL_inventoryitemchosen == ID_PUZZLE_ITEM1)
{
GLOBAL_inventoryitemchosen = NO_ITEM;
return 1;
}
else
{
if (have_i_got_object(ID_PUZZLE_ITEM1))
GLOBAL_enterinventory = ID_PUZZLE_ITEM1;
return 0;
}
#else
if (g_Inventory.GetSelectedObject() == ID_PUZZLE_ITEM1)
{
g_Inventory.SetSelectedObject(NO_ITEM);
@ -472,6 +497,7 @@ static int GetOnJeep(int itemNumber)
g_Inventory.SetEnterObject(ID_PUZZLE_ITEM1);
return 0;
}
#endif
}
else
return 0;
@ -481,6 +507,20 @@ static int GetOnJeep(int itemNumber)
int tempAngle = LaraItem->pos.yRot - item->pos.yRot;
if (tempAngle > ANGLE(225) && tempAngle < ANGLE(315))
{
#ifdef NEW_INV
if (GLOBAL_inventoryitemchosen == ID_PUZZLE_ITEM1)
{
GLOBAL_inventoryitemchosen = NO_ITEM;
return 1;
}
else
{
if (have_i_got_object(ID_PUZZLE_ITEM1))
GLOBAL_enterinventory = ID_PUZZLE_ITEM1;
return 0;
}
#else
if (g_Inventory.GetSelectedObject() == ID_PUZZLE_ITEM1)
{
g_Inventory.SetSelectedObject(NO_ITEM);
@ -492,6 +532,7 @@ static int GetOnJeep(int itemNumber)
g_Inventory.SetEnterObject(ID_PUZZLE_ITEM1);
return 0;
}
#endif
}
else
return 0;

View file

@ -16,6 +16,9 @@
#include "health.h"
#include "camera.h"
#include "prng.h"
#ifdef NEW_INV
#include "newinv2.h"
#endif
using namespace T5M::Math::Random;
/*collision stuff*/
@ -116,7 +119,9 @@ enum MOTORBIKE_FLAGS
FL_DEATH = 128
};
#ifndef NEW_INV
extern Inventory g_Inventory;
#endif
static char ExhaustStart = 0;
static bool NoGetOff = false;
@ -299,7 +304,13 @@ static BOOL GetOnMotorBike(short itemNumber)
if (item->flags & ONESHOT || Lara.gunStatus == LG_HANDS_BUSY || LaraItem->gravityStatus)
return false;
if ((abs(item->pos.yPos - LaraItem->pos.yPos) >= STEP_SIZE || !(TrInput & IN_ACTION)) && g_Inventory.GetSelectedObject() != ID_PUZZLE_ITEM1)
if ((abs(item->pos.yPos - LaraItem->pos.yPos) >= STEP_SIZE || !(TrInput & IN_ACTION)) &&
#ifdef NEW_INV
GLOBAL_inventoryitemchosen != ID_PUZZLE_ITEM1
#else
g_Inventory.GetSelectedObject() != ID_PUZZLE_ITEM1
#endif
)
return false;
dx = LaraItem->pos.xPos - item->pos.xPos;
@ -367,11 +378,19 @@ void MotorbikeCollision(short itemNumber, ITEM_INFO* laraitem, COLL_INFO* coll)
short angle = phd_atan(item->pos.zPos - laraitem->pos.zPos, item->pos.xPos - laraitem->pos.xPos) - item->pos.yRot;
if (angle <= -ANGLE(45.0f) || angle >= ANGLE(135.0f))
{
#ifdef NEW_INV
if (GLOBAL_inventoryitemchosen == ID_PUZZLE_ITEM1)
{
laraitem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_UNLOCK;
GLOBAL_inventoryitemchosen = NO_ITEM;
}
#else
if (g_Inventory.GetSelectedObject() == ID_PUZZLE_ITEM1)
{
laraitem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_UNLOCK;
g_Inventory.SetSelectedObject(NO_ITEM);
}
#endif
else
{
laraitem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_ENTER;

View file

@ -17,7 +17,9 @@
#define ANIMATION_LAGOON_WITCH_DEATH 7
#ifndef NEW_INV
extern Inventory g_Inventory;
#endif
BITE_INFO LagoonWitchBite = { 0, 0, 0, 7 };

View file

@ -732,6 +732,11 @@ typedef enum GAME_OBJECT_ID
ID_FLARE_INV_ITEM,
ID_COMPASS_ITEM,
ID_DIARY_ITEM,
ID_TIMEX_ITEM,
MEMCARD_LOAD_INV_ITEM,
MEMCARD_SAVE_INV_ITEM,
PC_LOAD_INV_ITEM,
PC_LOAD_SAVE_ITEM,
/* Inventory main objects */
ID_INVENTORY_PASSPORT = 1000,

View file

@ -555,6 +555,7 @@ namespace T5M::Renderer
void renderTitleMenu();
void renderPauseMenu();
void renderNewInventory();
void drawStatistics();
void drawDebris(RenderView& view,bool transparent);
void drawFullScreenImage(ID3D11ShaderResourceView* texture, float fade, ID3D11RenderTargetView* target, ID3D11DepthStencilView* depthTarget);
void updateAnimatedTextures();

View file

@ -794,11 +794,7 @@ namespace T5M::Renderer
break;
case pause_statistics:
y = 200;
drawString(400, y, "Statistics", PRINTSTRING_COLOR_ORANGE, PRINTSTRING_CENTER);
y += 25;
drawString(400, y, "todo, stats", PRINTSTRING_COLOR_WHITE, PRINTSTRING_CENTER);
drawStatistics();
break;
case pause_options_menu:
@ -1001,9 +997,46 @@ namespace T5M::Renderer
draw_ammo_selector();
fade_ammo_selector();
draw_compass();
drawAllStrings();
}
void Renderer11::drawStatistics()
{
unsigned short ypos;
short Days, Hours, Min, Sec;
char buffer[40];
int seconds;
ypos = 150;
drawString(400, ypos, "Statistics", PRINTSTRING_COLOR_ORANGE, PRINTSTRING_CENTER);
drawString(400, ypos + 2 * 25, "Level name here", PRINTSTRING_COLOR_WHITE, PRINTSTRING_CENTER);
drawString(200, ypos + 3 * 25, "Time Taken", PRINTSTRING_COLOR_WHITE, 0);
drawString(200, ypos + 4 * 25, "Distance travelled", PRINTSTRING_COLOR_WHITE, 0);
drawString(200, ypos + 5 * 25, "Ammo used", PRINTSTRING_COLOR_WHITE, 0);
drawString(200, ypos + 6 * 25, "HealthPacks used", PRINTSTRING_COLOR_WHITE, 0);
drawString(200, ypos + 7 * 25, "Secrets found", PRINTSTRING_COLOR_WHITE, 0);
seconds = GameTimer / 30;
Days = seconds / (24 * 60 * 60);
Hours = (seconds % (24 * 60 * 60)) / (60 * 60);
Min = (seconds / 60) % 60;
Sec = (seconds % 60);
sprintf(buffer, "%02d:%02d:%02d", (Days * 24) + Hours, Min, Sec);
drawString(500, ypos + 3 * 25, buffer, PRINTSTRING_COLOR_WHITE, 0);
sprintf(buffer, "%dm", Savegame.Game.Distance / 419);
drawString(500, ypos + 4 * 25, buffer, PRINTSTRING_COLOR_WHITE, 0);
sprintf(buffer, "%d", Savegame.Game.AmmoUsed);
drawString(500, ypos + 5 * 25, buffer, PRINTSTRING_COLOR_WHITE, 0);
sprintf(buffer, "%d", Savegame.Game.HealthUsed);
drawString(500, ypos + 6 * 25, buffer, PRINTSTRING_COLOR_WHITE, 0);
sprintf(buffer, "%d / 36", Savegame.Game.Secrets);
drawString(500, ypos + 7 * 25, buffer, PRINTSTRING_COLOR_WHITE, 0);
g_Renderer.drawAllStrings();
}
void Renderer11::renderInventoryScene(ID3D11RenderTargetView* target, ID3D11DepthStencilView* depthTarget, ID3D11ShaderResourceView* background)
{
char stringBuffer[255];
@ -1079,7 +1112,7 @@ namespace T5M::Renderer
m_context->VSSetConstantBuffers(0, 1, m_cbCameraMatrices.get());
#ifdef NEW_INV
if (CurrentLevel == 0)//sorry
if (CurrentLevel == 0)
{
int menu = getTitleMenu();
if (menu == title_main_menu || menu == title_options_menu)
@ -1113,7 +1146,13 @@ namespace T5M::Renderer
return;
}
if (GLOBAL_invMode == IM_PAUSE)//sorry again
if (GLOBAL_invMode == IM_STATS)
{
drawStatistics();
return;
}
if (GLOBAL_invMode == IM_PAUSE)
{
int menu = GetPauseMenu();
bool drawThing;
@ -2544,7 +2583,7 @@ namespace T5M::Renderer
drawOverlays(view);
m_currentY = 60;
#ifndef _DEBUG
#ifdef _DEBUG
ROOM_INFO *r = &g_Level.Rooms[LaraItem->roomNumber];
printDebugMessage("Update time: %d", m_timeUpdate);

View file

@ -100,6 +100,11 @@
#define STRING_RENDER_OPTIONS 103
#define STRING_DISPLAY_ADAPTER 104
#define STRING_OUTPUT_SETTINGS 105
#define STRING_EQUIP 106
#define STRING_COMBINE_WITH 107
#define STRING_EXAMINE 108
#define STRING_STATISTICS 109
#define STRING_CHOOSE_WEAPON 110
class LanguageScript
{