Skip to content

Commit

Permalink
tr2/vars: remove g_CurrentLevel
Browse files Browse the repository at this point in the history
  • Loading branch information
rr- committed Jan 24, 2025
1 parent 7b74270 commit 99a2f4e
Show file tree
Hide file tree
Showing 11 changed files with 52 additions and 26 deletions.
10 changes: 6 additions & 4 deletions src/tr2/decomp/savegame.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#include "decomp/skidoo.h"
#include "game/camera.h"
#include "game/game.h"
#include "game/game_flow.h"
#include "game/game_string.h"
#include "game/inventory.h"
Expand Down Expand Up @@ -819,9 +820,9 @@ void CreateStartInfo(const GAME_FLOW_LEVEL *const level)

void CreateSaveGameInfo(void)
{
g_SaveGame.current_level = g_CurrentLevel->num;

CreateStartInfo(g_CurrentLevel);
const GAME_FLOW_LEVEL *const current_level = Game_GetCurrentLevel();
g_SaveGame.current_level = current_level->num;
CreateStartInfo(current_level);

// TODO: refactor me!
g_SaveGame.num_pickup[0] = Inv_RequestItem(O_PICKUP_ITEM_1);
Expand Down Expand Up @@ -870,7 +871,8 @@ void CreateSaveGameInfo(void)

void ExtractSaveGameInfo(void)
{
Lara_InitialiseInventory(g_CurrentLevel);
const GAME_FLOW_LEVEL *const current_level = Game_GetCurrentLevel();
Lara_InitialiseInventory(current_level);
Inv_AddItemNTimes(O_PICKUP_ITEM_1, g_SaveGame.num_pickup[0]);
Inv_AddItemNTimes(O_PICKUP_ITEM_2, g_SaveGame.num_pickup[1]);
Inv_AddItemNTimes(O_PUZZLE_ITEM_1, g_SaveGame.num_puzzle[0]);
Expand Down
34 changes: 24 additions & 10 deletions src/tr2/game/game.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,22 @@

#include <libtrx/config.h>

static GAME_FLOW_LEVEL *m_CurrentLevel = NULL;

bool Game_Start(int32_t level_num, const GAME_FLOW_LEVEL_TYPE level_type)
{
g_CurrentLevel = GF_GetLevel(level_num, level_type);
GF_SetCurrentLevel(g_CurrentLevel);
GAME_FLOW_LEVEL *const level = GF_GetLevel(level_num, level_type);
Game_SetCurrentLevel(level);
GF_SetCurrentLevel(level);
if (level_type != GFL_SAVED) {
if (g_CurrentLevel != NULL) {
ModifyStartInfo(g_CurrentLevel);
if (level != NULL) {
ModifyStartInfo(level);
}
InitialiseLevelFlags();
}
if (!Level_Initialise(level_num, level_type)) {
g_CurrentLevel = NULL;
Game_SetCurrentLevel(NULL);
GF_SetCurrentLevel(NULL);
return false;
}

Expand Down Expand Up @@ -187,9 +191,19 @@ GAME_FLOW_LEVEL_TYPE Game_GetCurrentLevelType(void)
return g_GameInfo.current_level.type;
}

extern int32_t Game_GetCurrentLevelNum(void)
GAME_FLOW_LEVEL *Game_GetCurrentLevel(void)
{
return m_CurrentLevel;
}

void Game_SetCurrentLevel(GAME_FLOW_LEVEL *const level)
{
m_CurrentLevel = level;
}

int32_t Game_GetCurrentLevelNum(void)
{
return g_CurrentLevel != NULL ? g_CurrentLevel->num : -1;
return m_CurrentLevel != NULL ? m_CurrentLevel->num : -1;
}

bool Game_IsPlayable(void)
Expand All @@ -209,13 +223,13 @@ bool Game_IsPlayable(void)

bool Game_IsInGym(void)
{
if (g_CurrentLevel == NULL) {
if (m_CurrentLevel == NULL) {
return false;
}
if (g_CurrentLevel->type != GFL_NORMAL) {
if (m_CurrentLevel->type != GFL_NORMAL) {
return false;
}
return g_CurrentLevel->num == LV_GYM;
return m_CurrentLevel->num == LV_GYM;
}

void Game_ProcessInput(void)
Expand Down
2 changes: 2 additions & 0 deletions src/tr2/game/game.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@

void Game_ProcessInput(void);
bool Game_IsInGym(void);
GAME_FLOW_LEVEL *Game_GetCurrentLevel(void);
void Game_SetCurrentLevel(GAME_FLOW_LEVEL *level);
13 changes: 9 additions & 4 deletions src/tr2/game/game_flow/sequencer.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "decomp/savegame.h"
#include "game/demo.h"
#include "game/fmv.h"
#include "game/game.h"
#include "game/game_flow.h"
#include "game/music.h"
#include "game/phase.h"
Expand Down Expand Up @@ -161,7 +162,9 @@ GAME_FLOW_COMMAND GF_InterpretSequence(

case GFS_LEVEL_COMPLETE:
if (type == GFL_NORMAL) {
START_INFO *const start = GF_GetResumeInfo(g_CurrentLevel);
const GAME_FLOW_LEVEL *const current_level =
Game_GetCurrentLevel();
START_INFO *const start = GF_GetResumeInfo(current_level);
start->stats = g_SaveGame.current_stats;

if (g_GameFlow.level_complete_track != MX_INACTIVE) {
Expand All @@ -171,15 +174,15 @@ GAME_FLOW_COMMAND GF_InterpretSequence(
Phase_Stats_Create((PHASE_STATS_ARGS) {
.background_type = BK_OBJECT,
.show_final_stats = false,
.level_num = g_CurrentLevel->num,
.level_num = current_level->num,
.use_bare_style = false,
});
gf_cmd = PhaseExecutor_Run(stats_phase);
Phase_Stats_Destroy(stats_phase);

start->available = 0;
GAME_FLOW_LEVEL *const next_level =
GF_GetLevel(g_CurrentLevel->num + 1, g_CurrentLevel->type);
GF_GetLevel(current_level->num + 1, current_level->type);
if (next_level != NULL) {
CreateStartInfo(next_level);
g_SaveGame.current_level = next_level->num;
Expand All @@ -202,7 +205,9 @@ GAME_FLOW_COMMAND GF_InterpretSequence(

case GFS_GAME_COMPLETE:
if (type == GFL_NORMAL) {
START_INFO *const start = GF_GetResumeInfo(g_CurrentLevel);
const GAME_FLOW_LEVEL *const current_level =
Game_GetCurrentLevel();
START_INFO *const start = GF_GetResumeInfo(current_level);
start->stats = g_SaveGame.current_stats;
g_SaveGame.bonus_flag = true;
gf_cmd = DisplayCredits();
Expand Down
3 changes: 2 additions & 1 deletion src/tr2/game/lara/cheat.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "game/camera.h"
#include "game/console/common.h"
#include "game/creature.h"
#include "game/game.h"
#include "game/game_flow.h"
#include "game/game_string.h"
#include "game/gun/gun.h"
Expand Down Expand Up @@ -36,7 +37,7 @@ static void M_ReinitialiseGunMeshes(void)
const bool has_flare = Lara_GetMesh(LM_HAND_L)
== Object_GetMesh(g_Objects[O_LARA_FLARE].mesh_idx + LM_HAND_L);

Lara_InitialiseMeshes(g_CurrentLevel);
Lara_InitialiseMeshes(Game_GetCurrentLevel());
Gun_InitialiseNewWeapon();
if (has_flare) {
Flare_DrawMeshes();
Expand Down
5 changes: 3 additions & 2 deletions src/tr2/game/level.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "decomp/savegame.h"
#include "game/camera.h"
#include "game/effects.h"
#include "game/game.h"
#include "game/game_flow.h"
#include "game/inject.h"
#include "game/items.h"
Expand Down Expand Up @@ -796,7 +797,7 @@ bool Level_Initialise(

GAME_FLOW_LEVEL *const level = GF_GetLevel(level_num, level_type);
if (level_type != GFL_TITLE && level_type != GFL_CUTSCENE) {
g_CurrentLevel = level;
Game_SetCurrentLevel(level);
}
GF_SetCurrentLevel(level);
InitialiseGameFlags();
Expand Down Expand Up @@ -827,7 +828,7 @@ bool Level_Initialise(
if (level_type == GFL_SAVED) {
ExtractSaveGameInfo();
} else if (level_type == GFL_NORMAL) {
GF_InventoryModifier_Apply(g_CurrentLevel, GF_INV_REGULAR);
GF_InventoryModifier_Apply(Game_GetCurrentLevel(), GF_INV_REGULAR);
}

if (g_Objects[O_FINAL_LEVEL_COUNTER].loaded) {
Expand Down
3 changes: 2 additions & 1 deletion src/tr2/game/objects/general/pickup.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "game/objects/general/pickup.h"

#include "decomp/flares.h"
#include "game/game.h"
#include "game/game_flow.h"
#include "game/gun/gun.h"
#include "game/input.h"
Expand Down Expand Up @@ -82,7 +83,7 @@ static void M_DoPickup(const int16_t item_num)
+ ((g_SaveGame.current_stats.secret_flags >> 1) & 1)
+ ((g_SaveGame.current_stats.secret_flags >> 2) & 1)
>= 3) {
GF_InventoryModifier_Apply(g_CurrentLevel, GF_INV_SECRET);
GF_InventoryModifier_Apply(Game_GetCurrentLevel(), GF_INV_SECRET);
}

item->status = IS_INVISIBLE;
Expand Down
2 changes: 1 addition & 1 deletion src/tr2/game/option/option_compass.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ static void M_Init(void)
m_Dialog = UI_StatsDialog_Create((UI_STATS_DIALOG_ARGS) {
.mode = Game_IsInGym() ? UI_STATS_DIALOG_MODE_ASSAULT_COURSE
: UI_STATS_DIALOG_MODE_LEVEL,
.level_num = g_CurrentLevel->num,
.level_num = Game_GetCurrentLevel()->num,
.style = UI_STATS_DIALOG_STYLE_BORDERED,
});
}
Expand Down
4 changes: 3 additions & 1 deletion src/tr2/game/ui/widgets/stats_dialog.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "game/ui/widgets/stats_dialog.h"

#include "game/game.h"
#include "game/game_flow.h"
#include "game/game_string.h"
#include "game/input.h"
Expand Down Expand Up @@ -148,8 +149,9 @@ static void M_AddRowFromRole(

static void M_AddLevelStatsRows(UI_STATS_DIALOG *const self)
{
const GAME_FLOW_LEVEL *const current_level = Game_GetCurrentLevel();
const STATS_COMMON *stats =
g_CurrentLevel != NULL && self->args.level_num == g_CurrentLevel->num
current_level != NULL && self->args.level_num == current_level->num
? (STATS_COMMON *)&g_SaveGame.current_stats
: (STATS_COMMON *)&g_SaveGame.start[self->args.level_num].stats;
M_AddRowFromRole(self, M_ROW_TIMER, stats);
Expand Down
1 change: 0 additions & 1 deletion src/tr2/global/vars.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ uint16_t g_SoundOptionLine;
ASSAULT_STATS g_Assault;
int32_t g_LevelItemCount;
int32_t g_HealthBarTimer;
GAME_FLOW_LEVEL *g_CurrentLevel;
int32_t g_LevelComplete;
RGB_888 g_GamePalette8[256];
RGB_888 g_GamePalette16[256];
Expand Down
1 change: 0 additions & 1 deletion src/tr2/global/vars.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ extern uint16_t g_SoundOptionLine;
extern ASSAULT_STATS g_Assault;
extern int32_t g_LevelItemCount;
extern int32_t g_HealthBarTimer;
extern GAME_FLOW_LEVEL *g_CurrentLevel;
extern int32_t g_LevelComplete;
extern RGB_888 g_GamePalette8[256];
extern RGB_888 g_GamePalette16[256];
Expand Down

0 comments on commit 99a2f4e

Please sign in to comment.