Skip to content

Commit

Permalink
tr2/game-flow: fix carrying stats across cutscenes
Browse files Browse the repository at this point in the history
Resolves #2478.
  • Loading branch information
rr- committed Feb 10, 2025
1 parent 2ecb4c1 commit 68edafc
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 14 deletions.
11 changes: 0 additions & 11 deletions src/tr2/decomp/decomp.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,17 +209,6 @@ void InitialiseGameFlags(void)
g_IsMonkAngry = false;
}

void InitialiseLevelFlags(void)
{
g_SaveGame.current_stats.timer = 0;
g_SaveGame.current_stats.kills = 0;
g_SaveGame.current_stats.distance = 0;
g_SaveGame.current_stats.ammo_hits = 0;
g_SaveGame.current_stats.ammo_used = 0;
g_SaveGame.current_stats.medipacks = 0;
g_SaveGame.current_stats.secret_flags = 0;
}

void GetCarriedItems(void)
{
for (int32_t item_num = 0; item_num < Item_GetLevelCount(); item_num++) {
Expand Down
1 change: 0 additions & 1 deletion src/tr2/decomp/decomp.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ void IncreaseScreenSize(void);
void S_UnloadLevelFile(void);
void GetValidLevelsList(REQUEST_INFO *req);
void InitialiseGameFlags(void);
void InitialiseLevelFlags(void);
void GetCarriedItems(void);
int32_t DoShift(ITEM *vehicle, const XYZ_32 *pos, const XYZ_32 *old);
int32_t DoDynamics(int32_t height, int32_t fall_speed, int32_t *out_y);
Expand Down
5 changes: 3 additions & 2 deletions src/tr2/game/game_flow/sequencer_events.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "game/level.h"
#include "game/music.h"
#include "game/phase.h"
#include "game/stats.h"
#include "global/vars.h"

#include <libtrx/debug.h>
Expand Down Expand Up @@ -73,7 +74,7 @@ static DECLARE_GF_EVENT_HANDLER(M_HandlePlayLevel)
}
tmp_level = next_level;
}
InitialiseLevelFlags();
Stats_Reset();
break;
}

Expand All @@ -82,8 +83,8 @@ static DECLARE_GF_EVENT_HANDLER(M_HandlePlayLevel)
if (level->type == GFL_NORMAL) {
GF_InventoryModifier_Scan(level);
GF_InventoryModifier_Apply(level, GF_INV_REGULAR);
Stats_Reset();
}
InitialiseLevelFlags();
break;
}

Expand Down
11 changes: 11 additions & 0 deletions src/tr2/game/stats.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,14 @@ FINAL_STATS Stats_ComputeFinalStats(void)

return result;
}

void Stats_Reset(void)
{
g_SaveGame.current_stats.timer = 0;
g_SaveGame.current_stats.kills = 0;
g_SaveGame.current_stats.distance = 0;
g_SaveGame.current_stats.ammo_hits = 0;
g_SaveGame.current_stats.ammo_used = 0;
g_SaveGame.current_stats.medipacks = 0;
g_SaveGame.current_stats.secret_flags = 0;
}
1 change: 1 addition & 0 deletions src/tr2/game/stats.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@

void Stats_StartTimer(void);
void Stats_UpdateTimer(void);
void Stats_Reset(void);
FINAL_STATS Stats_ComputeFinalStats(void);

0 comments on commit 68edafc

Please sign in to comment.