This commit is contained in:
MontyTRC89 2021-06-07 16:10:51 +02:00
commit 54e48e4c52
4 changed files with 112 additions and 94 deletions

View file

@ -187,69 +187,70 @@ void DrawDashBar(int value)
}
}
int DrawAllPickups()
void DrawAllPickups()
{
if (Pickups[CurrentPickup].life > 0)
DISPLAY_PICKUP* pickup = &Pickups[CurrentPickup];
if (pickup->life > 0)
{
if (PickupX > 0)
{
PickupX += -PickupX >> 3;
g_Renderer.drawPickup(Pickups[CurrentPickup].objectNumber);
}
else
{
Pickups[CurrentPickup].life--;
g_Renderer.drawPickup(Pickups[CurrentPickup].objectNumber);
}
pickup->life--;
}
else if (Pickups[CurrentPickup].life == 0)
else if (pickup->life == 0)
{
if (PickupX < 128)
{
if (PickupVel < 16)
PickupVel++;
PickupX += PickupVel / 4;
g_Renderer.drawPickup(Pickups[CurrentPickup].objectNumber);
PickupX += PickupVel;
}
else
{
Pickups[CurrentPickup].life = -1;
pickup->life = -1;
PickupVel = 0;
g_Renderer.drawPickup(Pickups[CurrentPickup].objectNumber);
}
}
else
{
int i;
for (i = 0; i < MAX_COLLECTED_PICKUPS; i++)
{
if (Pickups[CurrentPickup].life > 0)
break;
CurrentPickup++;
CurrentPickup &= (MAX_COLLECTED_PICKUPS - 1);
}
if (i == MAX_COLLECTED_PICKUPS)
{
CurrentPickup = 0;
return;
}
}
int pickupIndex = CurrentPickup;
int i;
for (i = 0; i < MAX_COLLECTED_PICKUPS; ++i)
{
if (Pickups[pickupIndex].life > 0)
break;
pickupIndex = pickupIndex + 1 & MAX_COLLECTED_PICKUPS - 1;
}
CurrentPickup = pickupIndex;
if (i != MAX_COLLECTED_PICKUPS)
g_Renderer.drawPickup(Pickups[CurrentPickup].objectNumber);
CurrentPickup = 0;
return 0;
g_Renderer.drawPickup(Pickups[CurrentPickup].objectNumber);
}
void AddDisplayPickup(short objectNumber)
{
DISPLAY_PICKUP* pickup = Pickups;
for (int i = 0; i < MAX_COLLECTED_PICKUPS; i++)
{
DISPLAY_PICKUP* pickup = &Pickups[i];
if (pickup->life < 0)
{
pickup->life = 45;
pickup->objectNumber = objectNumber;
PickedUpObject(objectNumber);
return;
break;
}
pickup++;
}
// No free slot found, so just pickup the object ithout displaying it
@ -259,10 +260,7 @@ void AddDisplayPickup(short objectNumber)
void InitialisePickupDisplay()
{
for (int i = 0; i < MAX_COLLECTED_PICKUPS; i++)
{
DISPLAY_PICKUP* pickup = &Pickups[i];
pickup->life = -1;
}
Pickups[i].life = -1;
PickupX = 128;
PickupY = 128;

View file

@ -14,7 +14,7 @@ void DrawAirBar(float value);
void UpdateAirBar(int flash);
void DrawDashBar(int value);
void AddDisplayPickup(short objectNumber);
int DrawAllPickups();
void DrawAllPickups();
void InitialisePickupDisplay();
int FlashIt();

View file

@ -16,7 +16,6 @@
#include "lara_two_guns.h"
#include "level.h"
#include "input.h"
#include <Game/health.h>
using namespace T5M::Renderer;
bool goUp, goDown, goRight, goLeft, goSelect, goDeselect;
@ -162,61 +161,61 @@ if it's combineable, add its things to the combine_table.
INVOBJ inventry_objects_list[INVENTORY_TABLE_SIZE] =
{
//weps
{ID_PISTOLS_ITEM, 6, 0.5f, 16384, 44364, 48448, 2, STRING_PISTOLS, -1},
{ID_PISTOLS_AMMO_ITEM, 4, 0.5f, 0, 16384, 0, 2, STRING_PISTOLS_AMMO, -1},
{ID_UZI_ITEM, -4, 0.5f, 16384, 24576, 16384, 2, STRING_UZI , -1},
{ID_PISTOLS_ITEM, 6, 0.5f, ANGLE(90), ANGLE(243.69873046875f), ANGLE(276.1328125), 2, STRING_PISTOLS, -1},
{ID_PISTOLS_AMMO_ITEM, 4, 0.5f, 0, ANGLE(90), 0, 2, STRING_PISTOLS_AMMO, -1},
{ID_UZI_ITEM, -4, 0.5f, ANGLE(-90) , ANGLE(135), ANGLE(90), 2, STRING_UZI , -1},
{ID_UZI_AMMO_ITEM, 5, 0.5f, 0, 5384, 0, 2, STRING_UZI_AMMO, -1},
{ID_SHOTGUN_ITEM, -6, 0.5f, 32768, 49152, 8192, 2, STRING_SHOTGUN, 1},
{ID_SHOTGUN_AMMO1_ITEM, 0, 0.5f, 16384, 0, 0, 2, STRING_SHOTGUN_AMMO1, -1},
{ID_SHOTGUN_AMMO2_ITEM, 0, 0.5f, 16384, 0, 0, 2, STRING_SHOTGUN_AMMO2, -1},
{ID_REVOLVER_ITEM, 0, 0.5f, 16384, 10922, 15298, 2, STRING_REVOLVER , 1},
{ID_REVOLVER_AMMO_ITEM, 0, 0.5f, 16384, -3000, 0, 2, STRING_REVOLVER_AMMO, -1},
{ID_REVOLVER_ITEM, 0, 0.5f, 16384, 10922, 15298, 2, STRING_REVOLVER_LASER, 7},
{ID_CROSSBOW_ITEM, 0, 0.5f, 8192, 6144, 0, 2, STRING_CROSSBOW, 1},
{ID_CROSSBOW_ITEM, 0, 0.5f, 8192, 6144, 0, 2, STRING_CROSSBOW_LASER, 1/*idk*/},
{ID_CROSSBOW_AMMO1_ITEM, 0, 0.5f, 16384, -4096, 0, 2, STRING_CROSSBOW_AMMO1, -1},
{ID_CROSSBOW_AMMO2_ITEM, 0, 0.5f, 16384, -4096, 0, 2, STRING_CROSSBOW_AMMO1, -1},
{ID_CROSSBOW_AMMO3_ITEM, 0, 0.5f, 16384, -4096, 0, 2, STRING_CROSSBOW_AMMO1, -1},
{ID_HK_ITEM, 0, 0.5f, 0, 0xc000, 0, 2, STRING_HK, 1},
{ID_HK_ITEM, 0, 0.5f, 0, 0xc000, 0, 2, STRING_HK_SILENCED, -1},
{ID_HK_AMMO_ITEM, 3, 0.5f, 16384, 0, 0, 2, STRING_HK_AMMO, 2},
{ID_GRENADE_GUN_ITEM, 0, 0.5f, 16384, 0, 11980, 2, STRING_GRENADE_LAUNCHER, -1},
{ID_GRENADE_AMMO1_ITEM, 3, 0.5f, 16384, 0, 0, 2, STRING_GRENADE_AMMO1, -1},
{ID_GRENADE_AMMO2_ITEM, 3, 0.5f, 16384, 0, 0, 2, STRING_GRENADE_AMMO2, -1},
{ID_GRENADE_AMMO3_ITEM, 3, 0.5f, 16384, 0, 0, 2, STRING_GRENADE_AMMO3, -1},
{ID_HARPOON_ITEM, 0, 0.5f, 16384, 0, 0, 2, STRING_HARPOON_GUN, -1},
{ID_HARPOON_AMMO_ITEM, 3, 0.5f, 16384, 0, 0, 2, STRING_HARPOON_AMMO, -1},
{ID_ROCKET_LAUNCHER_ITEM, 0, 0.5f, 16384, 0, 0, 2, STRING_ROCKET_LAUNCHER, -1},
{ID_ROCKET_LAUNCHER_AMMO_ITEM, 3, 0.5f, 16384, 0, 0, 2, STRING_ROCKET_AMMO, -1},
{ID_SHOTGUN_ITEM, -6, 0.7f, ANGLE(-20), ANGLE(270), ANGLE(45), 2, STRING_SHOTGUN, 1},
{ID_SHOTGUN_AMMO1_ITEM, 0, 0.5f, ANGLE(90), 0, 0, 2, STRING_SHOTGUN_AMMO1, -1},
{ID_SHOTGUN_AMMO2_ITEM, 0, 0.5f, ANGLE(90), 0, 0, 2, STRING_SHOTGUN_AMMO2, -1},
{ID_REVOLVER_ITEM, 0, 0.5f, ANGLE(-90), ANGLE(60), ANGLE(85), 2, STRING_REVOLVER , 1},
{ID_REVOLVER_AMMO_ITEM, 0, 0.5f, ANGLE(90), ANGLE(-16), 0, 2, STRING_REVOLVER_AMMO, -1},
{ID_REVOLVER_ITEM, 0, 0.5f, ANGLE(90), ANGLE(60), ANGLE(85), 2, STRING_REVOLVER_LASER, 3},
{ID_CROSSBOW_ITEM, 0, 0.5f, ANGLE(-90), ANGLE(33), 0, 2, STRING_CROSSBOW, 1},
{ID_CROSSBOW_ITEM, 0, 0.5f, ANGLE(-90), ANGLE(33), 0, 2, STRING_CROSSBOW_LASER, 3/*idk*/},
{ID_CROSSBOW_AMMO1_ITEM, 0, 0.5f, ANGLE(90), 0, 0, 2, STRING_CROSSBOW_AMMO1, -1},
{ID_CROSSBOW_AMMO2_ITEM, 0, 0.5f, ANGLE(90), 0, 0, 2, STRING_CROSSBOW_AMMO1, -1},
{ID_CROSSBOW_AMMO3_ITEM, 0, 0.5f, ANGLE(90), 0, 0, 2, STRING_CROSSBOW_AMMO1, -1},
{ID_HK_ITEM, 0, 0.5f, ANGLE(0), ANGLE(280), 0, 2, STRING_HK, 1},
{ID_HK_ITEM, 0, 0.5f, ANGLE(-45), ANGLE(280), 0, 2, STRING_HK_SILENCED, -1},
{ID_HK_AMMO_ITEM, 3, 0.5f, ANGLE(90), 0, 0, 2, STRING_HK_AMMO, 2},
{ID_GRENADE_GUN_ITEM, 0, 0.5f, ANGLE(90), 0, ANGLE(65), 2, STRING_GRENADE_LAUNCHER, -1},
{ID_GRENADE_AMMO1_ITEM, 3, 0.5f, ANGLE(90), 0, 0, 2, STRING_GRENADE_AMMO1, -1},
{ID_GRENADE_AMMO2_ITEM, 3, 0.5f, ANGLE(90), 0, 0, 2, STRING_GRENADE_AMMO2, -1},
{ID_GRENADE_AMMO3_ITEM, 3, 0.5f, ANGLE(90), 0, 0, 2, STRING_GRENADE_AMMO3, -1},
{ID_HARPOON_ITEM, 0, 0.5f, 0, ANGLE(-65), ANGLE(-20), 2, STRING_HARPOON_GUN, -1},
{ID_HARPOON_AMMO_ITEM, 3, 0.5f, 0, ANGLE(15), 0, 2, STRING_HARPOON_AMMO, -1},
{ID_ROCKET_LAUNCHER_ITEM, 0, 0.5f, ANGLE(180), ANGLE(80), 0, 2, STRING_ROCKET_LAUNCHER, -1},
{ID_ROCKET_LAUNCHER_AMMO_ITEM, 3, 0.5f, ANGLE(90), 0, ANGLE(15), 2, STRING_ROCKET_AMMO, -1},
//misc
{ID_LASERSIGHT_ITEM, 2, 0.5f, 16384, 2000, 0, 2, STRING_LASERSIGHT, -1},
{ID_SILENCER_ITEM, 1, 0.5f, 0, 2000, 0, 2, STRING_SILENCER, -1},
{ID_BIGMEDI_ITEM, 2, 0.7f, 0, 0, 0, 2, STRING_LARGE_MEDIPACK, -1},
{ID_SMALLMEDI_ITEM, 0, 0.7f, 0, 20480, 0, 2, STRING_SMALL_MEDIPACK, -1},
{ID_BINOCULARS_ITEM, -1, 0.5f, 4096, 2000, 0, 2, STRING_BINOCULARS, -1},
{ID_FLARE_INV_ITEM, 2, 0.7f, 16384, 0, 0, 2, STRING_FLARES, -1},
{ID_TIMEX_ITEM, 2, 0.4f, 32768, 0, 0, 2, STRING_TIMEX, -1},
{ID_PC_LOAD_INV_ITEM, 52, 0.3f, 32768, 0, 0, 2, STRING_LOAD_GAME, -1},
{ID_PC_LOAD_SAVE_ITEM, 52, 0.3f, 32768, 0, 0, 2, STRING_SAVE_GAME, -1},
{ID_BURNING_TORCH_ITEM, 14, 0.5f, 0, 16384, 0, 2, STRING_LOAD_GAME, -1},
{ID_CROWBAR_ITEM, 4, 0.5f, 0, 16384, 0, 2, STRING_CROWBAR, -1},
{ID_LASERSIGHT_ITEM, 2, 0.5f, ANGLE(90), ANGLE(10), 0, 2, STRING_LASERSIGHT, -1},
{ID_SILENCER_ITEM, 1, 0.5f, 0, ANGLE(10), 0, 2, STRING_SILENCER, -1},
{ID_BIGMEDI_ITEM, 2, 0.7f, ANGLE(180), 0, 0, 2, STRING_LARGE_MEDIPACK, -1},
{ID_SMALLMEDI_ITEM, 0, 0.7f, ANGLE(180), ANGLE(112), 0, 2, STRING_SMALL_MEDIPACK, -1},
{ID_BINOCULARS_ITEM, -1, 0.5f, ANGLE(180), ANGLE(10), 0, 2, STRING_BINOCULARS, -1},
{ID_FLARE_INV_ITEM, 52, 0.8f, ANGLE(0), 0, 0, 2, STRING_FLARES, -1},
{ID_TIMEX_ITEM, 2, 0.4f, 0, 0, 0, 2, STRING_TIMEX, -1},
{ID_PC_LOAD_INV_ITEM, 52, 0.3f, ANGLE(180), 0, 0, 2, STRING_LOAD_GAME, -1},
{ID_PC_LOAD_SAVE_ITEM, 52, 0.3f, ANGLE(180), 0, 0, 2, STRING_SAVE_GAME, -1},
{ID_BURNING_TORCH_ITEM, 14, 0.5f, 0, ANGLE(90), 0, 2, STRING_LOAD_GAME, -1},
{ID_CROWBAR_ITEM, 4, 0.5f, 0, ANGLE(90), 0, 2, STRING_CROWBAR, -1},
{ID_DIARY_ITEM, 0, 0.5f, 0, 0, 0, 2, STRING_DIARY, -1},
{ID_COMPASS_ITEM, 0x0FFF2, 0.5f, 0, 0x36B0, 0, 0, STRING_LOAD_GAME, -1},
{ID_CLOCKWORK_BEETLE, 14, 0.5f, 0x4000, 0, 0, 2, STRING_LOAD_GAME, -1},
{ID_CLOCKWORK_BEETLE_COMBO1, 18, 0.5f, 0x4000, 0, 0, 2, STRING_LOAD_GAME, -1},
{ID_CLOCKWORK_BEETLE_COMBO2, 14, 0.5f, 0x4000, 0, 0, 2, STRING_LOAD_GAME, -1},
{ID_WATERSKIN1_EMPTY, 2, 0.5f, 0, 51536, 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN1_1, 2, 0.5f, 0, 51536, 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN1_2, 2, 0.5f, 0, 51536, 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN1_3, 2, 0.5f, 0, 51536, 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_EMPTY, 2, 0.5f, 0, 51536, 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_1, 2, 0.5f, 0, 51536, 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_2, 2, 0.5f, 0, 51536, 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_3, 2, 0.5f, 0, 51536, 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_4, 2, 0.5f, 0, 51536, 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_5, 2, 0.5f, 0, 51536, 0, 2, STRING_LOAD_GAME, -1 },
{ID_COMPASS_ITEM, 0x0FFF2, 0.5f, 0, 0, 0, 0, STRING_LOAD_GAME, -1},
{ID_CLOCKWORK_BEETLE, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1},
{ID_CLOCKWORK_BEETLE_COMBO1, 18, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1},
{ID_CLOCKWORK_BEETLE_COMBO2, 14, 0.5f, 0, 0, 0, 2, STRING_LOAD_GAME, -1},
{ID_WATERSKIN1_EMPTY, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN1_1, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN1_2, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN1_3, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_EMPTY, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_1, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_2, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_3, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_4, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 },
{ID_WATERSKIN2_5, 2, 0.5f, 0, ANGLE(285), 0, 2, STRING_LOAD_GAME, -1 },
//puzzles
@ -298,9 +297,9 @@ INVOBJ inventry_objects_list[INVENTORY_TABLE_SIZE] =
//examines
{ID_EXAMINE1, 4, 0.5f, 0, 16384, 0, 2, STRING_LOAD_GAME, -1},
{ID_EXAMINE2, 14, 0.5f, 0, 16384, 0, 2, STRING_LOAD_GAME, -1},
{ID_EXAMINE3, 14, 0.5f, 0, 16384, 0, 2, STRING_LOAD_GAME, -1},
{ID_EXAMINE1, 4, 0.5f, 0, ANGLE(90), 0, 2, STRING_LOAD_GAME, -1},
{ID_EXAMINE2, 14, 0.5f, 0, ANGLE(90), 0, 2, STRING_LOAD_GAME, -1},
{ID_EXAMINE3, 14, 0.5f, 0, ANGLE(90), 0, 2, STRING_LOAD_GAME, -1},
//examines combos
@ -3631,6 +3630,7 @@ int S_CallInventory2()
do_examine_mode();
DrawInv();
draw_compass();
if (useItem & !TrInput)
val = 1;
@ -3674,7 +3674,6 @@ int S_CallInventory2()
break;
}
InitialisePickupDisplay();
GLOBAL_lastinvitem = rings[RING_INVENTORY]->current_object_list[rings[RING_INVENTORY]->curobjinlist].invitem;
update_laras_weapons_status();
@ -3716,7 +3715,7 @@ void draw_compass()
return;
g_Renderer.drawObjectOn2DPosition(130, 480, ID_COMPASS_ITEM, ANGLE(90), 0, ANGLE(180), inventry_objects_list[ID_COMPASS_ITEM].scale1);
short compass_speed = phd_sin(compassNeedleAngle - LaraItem->pos.yRot);
short compass_angle = (LaraItem->pos.yRot + compass_speed) - 32768;
short compass_angle = (LaraItem->pos.yRot + compass_speed) - ANGLE(180);
Matrix::CreateRotationY(compass_angle);
}

View file

@ -60,6 +60,17 @@ namespace T5M::Renderer
x *= (ScreenWidth / 800.0f);
y *= (ScreenHeight / 600.0f);
if (GLOBAL_invMode)//sorry
{
INVOBJ* objme;
objme = &inventry_objects_list[convert_obj_to_invobj(objectNum)];
y += objme->yoff;
rotX += objme->xrot;
rotY += objme->yrot;
rotZ += objme->zrot;
}
view = Matrix::CreateLookAt(Vector3(0.0f, 0.0f, 2048.0f), Vector3(0.0f, 0.0f, 0.0f), Vector3(0.0f, -1.0f, 0.0f));
projection = Matrix::CreateOrthographic(ScreenWidth, ScreenHeight, -1024.0f, 1024.0f);
@ -106,6 +117,16 @@ namespace T5M::Renderer
{
RendererMesh *mesh = moveableObj.ObjectMeshes[n];
/*if (GLOBAL_invMode)
{
INVOBJ* objme;
objme = &inventry_objects_list[convert_obj_to_invobj(objectNum)];
if (!(objme->meshbits & (1 << n)))
continue;
}*/
// Finish the world matrix
translation = Matrix::CreateTranslation(pos.x, pos.y, pos.z + 1024.0f);
rotation = Matrix::CreateFromYawPitchRoll(TO_RAD(rotY), TO_RAD(rotX), TO_RAD(rotZ));