Saveload: Add save flag for if this is a scenario save
This commit is contained in:
@@ -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);
|
||||
|
Reference in New Issue
Block a user