mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-30 16:57:57 +03:00
fix inventory drawing; implement inventory in game code;
This commit is contained in:
parent
6074ab93a2
commit
d7fa758df7
17 changed files with 416 additions and 82 deletions
|
@ -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;
|
||||
|
|
|
@ -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 */
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 };
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue