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;
|
break;
|
||||||
|
|
||||||
case SM_SAVE_GAME: // Save game.
|
case SM_SAVE_GAME: { // Save game.
|
||||||
/* Make network saved games on pause compatible to singleplayer mode */
|
/* 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());
|
SetDParamStr(0, GetSaveLoadErrorString());
|
||||||
ShowErrorMessage(STR_JUST_RAW_STRING, INVALID_STRING_ID, WL_ERROR);
|
ShowErrorMessage(STR_JUST_RAW_STRING, INVALID_STRING_ID, WL_ERROR);
|
||||||
} else {
|
} else {
|
||||||
DeleteWindowById(WC_SAVELOAD, 0);
|
DeleteWindowById(WC_SAVELOAD, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case SM_SAVE_HEIGHTMAP: // Save heightmap.
|
case SM_SAVE_HEIGHTMAP: // Save heightmap.
|
||||||
MakeHeightmapScreenshot(_file_to_saveload.name.c_str());
|
MakeHeightmapScreenshot(_file_to_saveload.name.c_str());
|
||||||
|
@@ -3312,6 +3312,11 @@ bool IsNetworkServerSave()
|
|||||||
return _sl.save_flags & SMF_NET_SERVER;
|
return _sl.save_flags & SMF_NET_SERVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsScenarioSave()
|
||||||
|
{
|
||||||
|
return _sl.save_flags & SMF_SCENARIO;
|
||||||
|
}
|
||||||
|
|
||||||
struct ThreadedLoadFilter : LoadFilter {
|
struct ThreadedLoadFilter : LoadFilter {
|
||||||
static const size_t BUFFER_COUNT = 4;
|
static const size_t BUFFER_COUNT = 4;
|
||||||
|
|
||||||
|
@@ -56,6 +56,7 @@ enum SaveModeFlags : byte {
|
|||||||
SMF_NONE = 0,
|
SMF_NONE = 0,
|
||||||
SMF_NET_SERVER = 1 << 0, ///< Network server save
|
SMF_NET_SERVER = 1 << 0, ///< Network server save
|
||||||
SMF_ZSTD_OK = 1 << 1, ///< Zstd OK
|
SMF_ZSTD_OK = 1 << 1, ///< Zstd OK
|
||||||
|
SMF_SCENARIO = 1 << 2, ///< Scenario save
|
||||||
};
|
};
|
||||||
DECLARE_ENUM_AS_BIT_SET(SaveModeFlags);
|
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 SaveWithFilter(struct SaveFilter *writer, bool threaded, SaveModeFlags flags);
|
||||||
SaveOrLoadResult LoadWithFilter(struct LoadFilter *reader);
|
SaveOrLoadResult LoadWithFilter(struct LoadFilter *reader);
|
||||||
bool IsNetworkServerSave();
|
bool IsNetworkServerSave();
|
||||||
|
bool IsScenarioSave();
|
||||||
|
|
||||||
typedef void ChunkSaveLoadProc();
|
typedef void ChunkSaveLoadProc();
|
||||||
typedef void AutolengthProc(void *arg);
|
typedef void AutolengthProc(void *arg);
|
||||||
|
Reference in New Issue
Block a user