Saveload: Add save flag for if this is a scenario save

pull/507/head
Jonathan G Rennison 1 year ago
parent 69c3e94111
commit 6cdf67f38a

@ -1361,15 +1361,18 @@ void SwitchToMode(SwitchMode new_mode)
}
break;
case SM_SAVE_GAME: // Save game.
case SM_SAVE_GAME: { // Save game.
/* Make network saved games on pause compatible to singleplayer mode */
if (SaveOrLoad(_file_to_saveload.name, SLO_SAVE, DFT_GAME_FILE, NO_DIRECTORY) != SL_OK) {
SaveModeFlags flags = SMF_NONE;
if (_game_mode == GM_EDITOR) flags |= SMF_SCENARIO;
if (SaveOrLoad(_file_to_saveload.name, SLO_SAVE, DFT_GAME_FILE, NO_DIRECTORY, true, flags) != SL_OK) {
SetDParamStr(0, GetSaveLoadErrorString());
ShowErrorMessage(STR_JUST_RAW_STRING, INVALID_STRING_ID, WL_ERROR);
} else {
DeleteWindowById(WC_SAVELOAD, 0);
}
break;
}
case SM_SAVE_HEIGHTMAP: // Save heightmap.
MakeHeightmapScreenshot(_file_to_saveload.name.c_str());

@ -3312,6 +3312,11 @@ bool IsNetworkServerSave()
return _sl.save_flags & SMF_NET_SERVER;
}
bool IsScenarioSave()
{
return _sl.save_flags & SMF_SCENARIO;
}
struct ThreadedLoadFilter : LoadFilter {
static const size_t BUFFER_COUNT = 4;

@ -56,6 +56,7 @@ enum SaveModeFlags : byte {
SMF_NONE = 0,
SMF_NET_SERVER = 1 << 0, ///< Network server save
SMF_ZSTD_OK = 1 << 1, ///< Zstd OK
SMF_SCENARIO = 1 << 2, ///< Scenario save
};
DECLARE_ENUM_AS_BIT_SET(SaveModeFlags);
@ -74,6 +75,7 @@ void DoAutoOrNetsave(FiosNumberedSaveName &counter, bool threaded);
SaveOrLoadResult SaveWithFilter(struct SaveFilter *writer, bool threaded, SaveModeFlags flags);
SaveOrLoadResult LoadWithFilter(struct LoadFilter *reader);
bool IsNetworkServerSave();
bool IsScenarioSave();
typedef void ChunkSaveLoadProc();
typedef void AutolengthProc(void *arg);

Loading…
Cancel
Save