From 6cdf67f38af357c3a10f1fd4fd20a5332ee743ea Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Tue, 21 Mar 2023 18:00:30 +0000 Subject: [PATCH] Saveload: Add save flag for if this is a scenario save --- src/openttd.cpp | 7 +++++-- src/saveload/saveload.cpp | 5 +++++ src/saveload/saveload.h | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/openttd.cpp b/src/openttd.cpp index a2d374b69a..792cd110ab 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -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()); diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index ad301ff945..fff95557c6 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -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; diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index 26f55f9758..50bffff1cf 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -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);