mirror of
https://github.com/LostArtefacts/TRX.git
synced 2025-04-28 20:58:07 +03:00
tr1/savegame: set save game info on save
This allows strategies to set any values in savegame info during saving that would normally be set during initial fill_info reads. This resolves the restart level option not being available until the saves are re-scanned.
This commit is contained in:
parent
9e0e36c3c7
commit
a627ff2beb
4 changed files with 11 additions and 4 deletions
|
@ -6,6 +6,7 @@
|
||||||
- fixed Mac builds crashing upon start (regression from 4.9)
|
- fixed Mac builds crashing upon start (regression from 4.9)
|
||||||
- fixed sprites rendering black if no shade value is assigned in the level (#2701, regression from 4.9)
|
- fixed sprites rendering black if no shade value is assigned in the level (#2701, regression from 4.9)
|
||||||
- fixed being stuck on the Restart Level page if using save crystals and F5 is pressed when no saves are present (#2700, regression from 4.8.2)
|
- fixed being stuck on the Restart Level page if using save crystals and F5 is pressed when no saves are present (#2700, regression from 4.8.2)
|
||||||
|
- fixed being stuck on the Exit to Title page if using save crystals and a new save is made when there were previously none, and then F5 is pressed (#2700, regression from 4.9)
|
||||||
- improved rendering performance
|
- improved rendering performance
|
||||||
|
|
||||||
## [4.9](https://github.com/LostArtefacts/TRX/compare/tr1-4.8.3...tr1-4.9) - 2025-03-31
|
## [4.9](https://github.com/LostArtefacts/TRX/compare/tr1-4.8.3...tr1-4.9) - 2025-03-31
|
||||||
|
|
|
@ -38,7 +38,8 @@ typedef struct {
|
||||||
bool (*fill_info)(MYFILE *fp, SAVEGAME_INFO *info);
|
bool (*fill_info)(MYFILE *fp, SAVEGAME_INFO *info);
|
||||||
bool (*load_from_file)(MYFILE *fp, GAME_INFO *game_info);
|
bool (*load_from_file)(MYFILE *fp, GAME_INFO *game_info);
|
||||||
bool (*load_only_resume_info)(MYFILE *fp, GAME_INFO *game_info);
|
bool (*load_only_resume_info)(MYFILE *fp, GAME_INFO *game_info);
|
||||||
void (*save_to_file)(MYFILE *fp, GAME_INFO *game_info);
|
void (*save_to_file)(
|
||||||
|
MYFILE *fp, GAME_INFO *game_info, SAVEGAME_INFO *savegame_info);
|
||||||
bool (*update_death_counters)(MYFILE *fp, GAME_INFO *game_info);
|
bool (*update_death_counters)(MYFILE *fp, GAME_INFO *game_info);
|
||||||
} SAVEGAME_STRATEGY;
|
} SAVEGAME_STRATEGY;
|
||||||
|
|
||||||
|
@ -540,7 +541,7 @@ bool Savegame_Save(const int32_t slot_num)
|
||||||
MYFILE *const fp = File_Open(full_path, FILE_OPEN_WRITE);
|
MYFILE *const fp = File_Open(full_path, FILE_OPEN_WRITE);
|
||||||
if (fp != nullptr) {
|
if (fp != nullptr) {
|
||||||
g_SaveCounter++;
|
g_SaveCounter++;
|
||||||
strategy->save_to_file(fp, game_info);
|
strategy->save_to_file(fp, game_info, savegame_info);
|
||||||
savegame_info->format = strategy->format;
|
savegame_info->format = strategy->format;
|
||||||
Memory_FreePointer(&savegame_info->full_path);
|
Memory_FreePointer(&savegame_info->full_path);
|
||||||
savegame_info->full_path = Memory_DupStr(File_GetPath(fp));
|
savegame_info->full_path = Memory_DupStr(File_GetPath(fp));
|
||||||
|
|
|
@ -1509,7 +1509,9 @@ cleanup:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Savegame_BSON_SaveToFile(MYFILE *fp, GAME_INFO *game_info)
|
void Savegame_BSON_SaveToFile(
|
||||||
|
MYFILE *const fp, GAME_INFO *const game_info,
|
||||||
|
SAVEGAME_INFO *const savegame_info)
|
||||||
{
|
{
|
||||||
ASSERT(game_info != nullptr);
|
ASSERT(game_info != nullptr);
|
||||||
|
|
||||||
|
@ -1536,6 +1538,8 @@ void Savegame_BSON_SaveToFile(MYFILE *fp, GAME_INFO *game_info)
|
||||||
JSON_VALUE *root = JSON_ValueFromObject(root_obj);
|
JSON_VALUE *root = JSON_ValueFromObject(root_obj);
|
||||||
M_SaveRaw(fp, root, SAVEGAME_CURRENT_VERSION);
|
M_SaveRaw(fp, root, SAVEGAME_CURRENT_VERSION);
|
||||||
JSON_ValueFree(root);
|
JSON_ValueFree(root);
|
||||||
|
|
||||||
|
savegame_info->features.restart = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Savegame_BSON_UpdateDeathCounters(MYFILE *fp, GAME_INFO *game_info)
|
bool Savegame_BSON_UpdateDeathCounters(MYFILE *fp, GAME_INFO *game_info)
|
||||||
|
|
|
@ -13,5 +13,6 @@ const char *Savegame_BSON_GetSaveFilePattern(void);
|
||||||
bool Savegame_BSON_FillInfo(MYFILE *fp, SAVEGAME_INFO *info);
|
bool Savegame_BSON_FillInfo(MYFILE *fp, SAVEGAME_INFO *info);
|
||||||
bool Savegame_BSON_LoadFromFile(MYFILE *fp, GAME_INFO *game_info);
|
bool Savegame_BSON_LoadFromFile(MYFILE *fp, GAME_INFO *game_info);
|
||||||
bool Savegame_BSON_LoadOnlyResumeInfo(MYFILE *fp, GAME_INFO *game_info);
|
bool Savegame_BSON_LoadOnlyResumeInfo(MYFILE *fp, GAME_INFO *game_info);
|
||||||
void Savegame_BSON_SaveToFile(MYFILE *fp, GAME_INFO *game_info);
|
void Savegame_BSON_SaveToFile(
|
||||||
|
MYFILE *fp, GAME_INFO *game_info, SAVEGAME_INFO *savegame_info);
|
||||||
bool Savegame_BSON_UpdateDeathCounters(MYFILE *fp, GAME_INFO *game_info);
|
bool Savegame_BSON_UpdateDeathCounters(MYFILE *fp, GAME_INFO *game_info);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue