diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index 72e685ae27..58b7ec134c 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -326,7 +326,7 @@ namespace OpenRCT2::Ui::Windows case (LOADSAVETYPE_SAVE | LOADSAVETYPE_LANDSCAPE): SetAndSaveConfigPath(Config::Get().general.LastSaveLandscapeDirectory, pathBuffer); - gScenarioFileName = std::string(String::ToStringView(pathBuffer, std::size(pathBuffer))); + gameState.ScenarioFileName = std::string(String::ToStringView(pathBuffer, std::size(pathBuffer))); if (ScenarioSave(gameState, pathBuffer, Config::Get().general.SavePluginData ? 3 : 2)) { gCurrentLoadedPath = pathBuffer; @@ -347,7 +347,7 @@ namespace OpenRCT2::Ui::Windows int32_t parkFlagsBackup = gameState.Park.Flags; gameState.Park.Flags &= ~PARK_FLAGS_SPRITES_INITIALISED; gameState.EditorStep = EditorStep::Invalid; - gScenarioFileName = std::string(String::ToStringView(pathBuffer, std::size(pathBuffer))); + gameState.ScenarioFileName = std::string(String::ToStringView(pathBuffer, std::size(pathBuffer))); int32_t success = ScenarioSave(gameState, pathBuffer, Config::Get().general.SavePluginData ? 3 : 2); gameState.Park.Flags = parkFlagsBackup; diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index 12e31d1219..969097b51b 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -87,6 +87,7 @@ namespace OpenRCT2 std::string ScenarioName; std::string ScenarioDetails; std::string ScenarioCompletedBy; + std::string ScenarioFileName; std::vector Banners; Entity_t Entities[MAX_ENTITIES]{}; diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 654b16a10b..b70794096f 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -457,7 +457,7 @@ namespace OpenRCT2 if (os.GetHeader().TargetVersion >= 1) { - cs.ReadWrite(gScenarioFileName); + cs.ReadWrite(gameState.ScenarioFileName); } }); } diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 70fb15516c..30a1c1fc07 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -324,7 +324,7 @@ namespace OpenRCT2::RCT1 uint16_t mapSize = _s4.MapSize == 0 ? Limits::kMaxMapSize : _s4.MapSize; - gScenarioFileName = GetRCT1ScenarioName(); + gameState.ScenarioFileName = GetRCT1ScenarioName(); // Do map initialisation, same kind of stuff done when loading scenario editor gameStateInitAll(gameState, { mapSize, mapSize }); diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 383e383cf2..a6e6ba6ed5 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -501,12 +501,13 @@ namespace OpenRCT2::RCT2 if (_s6.Header.Type == S6_TYPE_SCENARIO) { // _s6.ScenarioFilename is wrong for some RCT2 expansion scenarios, so we use the real filename - gScenarioFileName = Path::GetFileName(_s6Path); + gameState.ScenarioFileName = Path::GetFileName(_s6Path); } else { // For savegames the filename can be arbitrary, so we have no choice but to rely on the name provided - gScenarioFileName = std::string(String::ToStringView(_s6.ScenarioFilename, std::size(_s6.ScenarioFilename))); + gameState.ScenarioFileName = std::string( + String::ToStringView(_s6.ScenarioFilename, std::size(_s6.ScenarioFilename))); } gCurrentRealTimeTicks = 0; diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index a74e0578a6..69333bf3a8 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -70,8 +70,6 @@ uint32_t gLastAutoSaveUpdate = 0; bool gAllowEarlyCompletionInNetworkPlay; -std::string gScenarioFileName; - static void ScenarioCheckObjective(GameState_t& gameState); using namespace OpenRCT2; @@ -205,7 +203,7 @@ void ScenarioSuccess(GameState_t& gameState) gameState.ScenarioCompletedCompanyValue = companyValue; PeepApplause(); - if (ScenarioRepositoryTryRecordHighscore(gScenarioFileName.c_str(), companyValue, nullptr)) + if (ScenarioRepositoryTryRecordHighscore(gameState.ScenarioFileName.c_str(), companyValue, nullptr)) { // Allow name entry gameState.Park.Flags |= PARK_FLAGS_SCENARIO_COMPLETE_NAME_INPUT; @@ -220,7 +218,7 @@ void ScenarioSuccess(GameState_t& gameState) */ void ScenarioSuccessSubmitName(GameState_t& gameState, const char* name) { - if (ScenarioRepositoryTryRecordHighscore(gScenarioFileName.c_str(), gameState.ScenarioCompanyValueRecord, name)) + if (ScenarioRepositoryTryRecordHighscore(gameState.ScenarioFileName.c_str(), gameState.ScenarioCompanyValueRecord, name)) { gameState.ScenarioCompletedBy = name; } diff --git a/src/openrct2/scenario/Scenario.h b/src/openrct2/scenario/Scenario.h index fd2faecaf5..97860f2247 100644 --- a/src/openrct2/scenario/Scenario.h +++ b/src/openrct2/scenario/Scenario.h @@ -160,8 +160,6 @@ extern std::string gScenarioSavePath; extern bool gFirstTimeSaving; extern uint32_t gLastAutoSaveUpdate; -extern std::string gScenarioFileName; - void ScenarioBegin(OpenRCT2::GameState_t& gameState); void ScenarioReset(OpenRCT2::GameState_t& gameState); void ScenarioUpdate(OpenRCT2::GameState_t& gameState); diff --git a/src/openrct2/scenario/ScenarioRepository.cpp b/src/openrct2/scenario/ScenarioRepository.cpp index e0cb3a6c41..5c05dad2cd 100644 --- a/src/openrct2/scenario/ScenarioRepository.cpp +++ b/src/openrct2/scenario/ScenarioRepository.cpp @@ -362,7 +362,8 @@ public: // Get scenario using RCTC style name of RCT2 scenario scenario = GetByFilename((scenarioBaseName + ".sea").c_str()); } - // gScenarioFileName .Park scenarios is the full file path instead of just , so need to convert + // GameState_t::ScenarioFileName .Park scenarios is the full file path instead of just , so need + // to convert else if (String::IEquals(scenarioExtension, ".park")) { scenario = GetByFilename((scenarioBaseName + ".park").c_str()); diff --git a/src/openrct2/scripting/bindings/world/ScScenario.hpp b/src/openrct2/scripting/bindings/world/ScScenario.hpp index 152efb4c71..330367a447 100644 --- a/src/openrct2/scripting/bindings/world/ScScenario.hpp +++ b/src/openrct2/scripting/bindings/world/ScScenario.hpp @@ -231,13 +231,13 @@ namespace OpenRCT2::Scripting std::string filename_get() { - return gScenarioFileName; + return GetGameState().ScenarioFileName; } void filename_set(const std::string& value) { ThrowIfGameStateNotMutable(); - gScenarioFileName = value; + GetGameState().ScenarioFileName = value; } std::shared_ptr objective_get() const