mirror of
https://github.com/LostArtefacts/TRX.git
synced 2025-04-30 13:47:59 +03:00
savegame: remove GAME_INFO.current_level
It is confusing to have this and g_CurrentLevel at the same time.
This commit is contained in:
parent
44bb2d584a
commit
016cd906c2
6 changed files with 29 additions and 24 deletions
|
@ -86,7 +86,7 @@ static bool SaveGame_NeedsEvilLaraFix(GAME_INFO *game_info)
|
|||
assert(game_info);
|
||||
|
||||
bool result = false;
|
||||
if (game_info->current_level != 14) {
|
||||
if (g_CurrentLevel != 14) {
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -260,7 +260,6 @@ static void SaveGame_FillSaveBuffer(GAME_INFO *game_info)
|
|||
// Write current game information into the save buffer.
|
||||
|
||||
assert(game_info);
|
||||
game_info->current_level = g_CurrentLevel;
|
||||
|
||||
CreateStartInfo(g_CurrentLevel);
|
||||
|
||||
|
@ -270,13 +269,13 @@ static void SaveGame_FillSaveBuffer(GAME_INFO *game_info)
|
|||
char title[SAVEGAME_TITLE_SIZE];
|
||||
snprintf(
|
||||
title, SAVEGAME_TITLE_SIZE, "%s",
|
||||
g_GameFlow.levels[game_info->current_level].level_title);
|
||||
g_GameFlow.levels[g_CurrentLevel].level_title);
|
||||
SaveGame_WriteSG(title, SAVEGAME_TITLE_SIZE);
|
||||
SaveGame_WriteSG(&g_SaveCounter, sizeof(int32_t));
|
||||
|
||||
for (int i = 0; i < g_GameFlow.level_count; i++) {
|
||||
if (g_GameFlow.levels[i].level_type == GFL_CURRENT) {
|
||||
game_info->start[i] = game_info->start[game_info->current_level];
|
||||
game_info->start[i] = game_info->start[g_CurrentLevel];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -298,7 +297,7 @@ static void SaveGame_FillSaveBuffer(GAME_INFO *game_info)
|
|||
SaveGame_WriteSG(&game_info->timer, sizeof(uint32_t));
|
||||
SaveGame_WriteSG(&game_info->kills, sizeof(uint32_t));
|
||||
SaveGame_WriteSG(&game_info->secrets, sizeof(uint16_t));
|
||||
SaveGame_WriteSG(&game_info->current_level, sizeof(uint16_t));
|
||||
SaveGame_WriteSG(&g_CurrentLevel, sizeof(uint16_t));
|
||||
SaveGame_WriteSG(&game_info->pickups, sizeof(uint8_t));
|
||||
SaveGame_WriteSG(&game_info->bonus_flag, sizeof(uint8_t));
|
||||
|
||||
|
@ -411,19 +410,19 @@ void SaveGame_ApplySaveBuffer(GAME_INFO *game_info)
|
|||
SaveGame_ReadSG(&start->flags, sizeof(uint16_t));
|
||||
}
|
||||
|
||||
for (int i = 0; i < g_GameFlow.level_count; i++) {
|
||||
if (g_GameFlow.levels[i].level_type == GFL_CURRENT) {
|
||||
game_info->start[game_info->current_level] = game_info->start[i];
|
||||
}
|
||||
}
|
||||
|
||||
SaveGame_ReadSG(&game_info->timer, sizeof(uint32_t));
|
||||
SaveGame_ReadSG(&game_info->kills, sizeof(uint32_t));
|
||||
SaveGame_ReadSG(&game_info->secrets, sizeof(uint16_t));
|
||||
SaveGame_ReadSG(&game_info->current_level, sizeof(uint16_t));
|
||||
SaveGame_ReadSG(&g_CurrentLevel, sizeof(uint16_t));
|
||||
SaveGame_ReadSG(&game_info->pickups, sizeof(uint8_t));
|
||||
SaveGame_ReadSG(&game_info->bonus_flag, sizeof(uint8_t));
|
||||
|
||||
for (int i = 0; i < g_GameFlow.level_count; i++) {
|
||||
if (g_GameFlow.levels[i].level_type == GFL_CURRENT) {
|
||||
game_info->start[g_CurrentLevel] = game_info->start[i];
|
||||
}
|
||||
}
|
||||
|
||||
InitialiseLaraInventory(g_CurrentLevel);
|
||||
SAVEGAME_ITEM_STATS item_stats = { 0 };
|
||||
SaveGame_ReadSG(&item_stats, sizeof(item_stats));
|
||||
|
@ -809,7 +808,7 @@ static void SaveGame_ReadSGLOT(LOT_INFO *lot)
|
|||
SaveGame_ReadSG(&lot->target, sizeof(PHD_VECTOR));
|
||||
}
|
||||
|
||||
bool SaveGame_LoadSaveBufferFromFile(GAME_INFO *game_info, int32_t slot)
|
||||
int16_t SaveGame_LoadSaveBufferFromFile(GAME_INFO *game_info, int32_t slot)
|
||||
{
|
||||
assert(game_info);
|
||||
|
||||
|
@ -819,7 +818,7 @@ bool SaveGame_LoadSaveBufferFromFile(GAME_INFO *game_info, int32_t slot)
|
|||
|
||||
MYFILE *fp = File_Open(filename, FILE_OPEN_READ);
|
||||
if (!fp) {
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
File_Read(
|
||||
&game_info->savegame_buffer[0], sizeof(char), MAX_SAVEGAME_BUFFER, fp);
|
||||
|
@ -843,9 +842,11 @@ bool SaveGame_LoadSaveBufferFromFile(GAME_INFO *game_info, int32_t slot)
|
|||
SaveGame_SkipSG(sizeof(uint32_t));
|
||||
SaveGame_SkipSG(sizeof(uint32_t));
|
||||
SaveGame_SkipSG(sizeof(uint16_t));
|
||||
SaveGame_ReadSG(&game_info->current_level, sizeof(uint16_t));
|
||||
|
||||
return true;
|
||||
uint16_t level_num;
|
||||
SaveGame_ReadSG(&level_num, sizeof(int16_t));
|
||||
|
||||
return level_num;
|
||||
}
|
||||
|
||||
bool SaveGame_SaveToFile(GAME_INFO *game_info, int32_t slot)
|
||||
|
|
|
@ -8,7 +8,7 @@ void InitialiseStartInfo();
|
|||
void ModifyStartInfo(int32_t level_num);
|
||||
void CreateStartInfo(int level_num);
|
||||
|
||||
bool SaveGame_LoadSaveBufferFromFile(GAME_INFO *save, int32_t slot);
|
||||
int16_t SaveGame_LoadSaveBufferFromFile(GAME_INFO *save, int32_t slot);
|
||||
void SaveGame_ApplySaveBuffer(GAME_INFO *save);
|
||||
|
||||
bool SaveGame_SaveToFile(GAME_INFO *save, int32_t slot);
|
||||
|
|
|
@ -103,11 +103,16 @@ void Shell_Main()
|
|||
gf_option = GameFlow_InterpretSequence(gf_param, GFL_NORMAL);
|
||||
break;
|
||||
|
||||
case GF_START_SAVED_GAME:
|
||||
SaveGame_LoadSaveBufferFromFile(&g_GameInfo, gf_param);
|
||||
gf_option =
|
||||
GameFlow_InterpretSequence(g_GameInfo.current_level, GFL_SAVED);
|
||||
case GF_START_SAVED_GAME: {
|
||||
int16_t level_num =
|
||||
SaveGame_LoadSaveBufferFromFile(&g_GameInfo, gf_param);
|
||||
if (level_num < 0) {
|
||||
gf_option = GF_EXIT_TO_TITLE;
|
||||
} else {
|
||||
gf_option = GameFlow_InterpretSequence(level_num, GFL_SAVED);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case GF_START_CINE:
|
||||
gf_option = GameFlow_InterpretSequence(gf_param, GFL_CUTSCENE);
|
||||
|
|
|
@ -1467,7 +1467,6 @@ typedef struct GAME_INFO {
|
|||
uint32_t timer;
|
||||
uint32_t kills;
|
||||
uint16_t secrets;
|
||||
uint16_t current_level;
|
||||
uint8_t pickups;
|
||||
uint8_t bonus_flag;
|
||||
char savegame_buffer[MAX_SAVEGAME_BUFFER];
|
||||
|
|
|
@ -57,7 +57,7 @@ CAMERA_INFO g_Camera = { 0 };
|
|||
GAME_INFO g_GameInfo = { 0 };
|
||||
int32_t g_SavedGamesCount = 0;
|
||||
int32_t g_SaveCounter = 0;
|
||||
int32_t g_CurrentLevel = -1;
|
||||
int16_t g_CurrentLevel = -1;
|
||||
uint32_t *g_DemoData = NULL;
|
||||
bool g_LevelComplete = false;
|
||||
bool g_ResetFlag = false;
|
||||
|
|
|
@ -49,7 +49,7 @@ extern CAMERA_INFO g_Camera;
|
|||
extern GAME_INFO g_GameInfo;
|
||||
extern int32_t g_SavedGamesCount;
|
||||
extern int32_t g_SaveCounter;
|
||||
extern int32_t g_CurrentLevel;
|
||||
extern int16_t g_CurrentLevel;
|
||||
extern uint32_t *g_DemoData;
|
||||
extern bool g_LevelComplete;
|
||||
extern bool g_ResetFlag;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue