diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 389e507cf5..aa840eca83 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -138,6 +138,23 @@ public: _s4Path = path; } + void Load(const utf8 * path) override + { + const utf8 * extension = Path::GetExtension(path); + if (String::Equals(extension, ".sc4")) + { + LoadScenario(path); + } + else if (String::Equals(extension, ".sv4")) + { + LoadSavedGame(path); + } + else + { + throw Exception("Invalid RCT1 park extension."); + } + } + void Import() override { Initialise(); diff --git a/src/openrct2/rct1/S4Importer.h b/src/openrct2/rct1/S4Importer.h index 64bb5df230..91d67965bb 100644 --- a/src/openrct2/rct1/S4Importer.h +++ b/src/openrct2/rct1/S4Importer.h @@ -28,6 +28,7 @@ public: virtual ~IS4Importer() { } virtual void LoadSavedGame(const utf8 * path) abstract; virtual void LoadScenario(const utf8 * path) abstract; + virtual void Load(const utf8 * path) abstract; virtual void Import() abstract; virtual bool GetDetails(scenario_index_entry * dst) abstract; }; diff --git a/src/openrct2/title/TitleSequencePlayer.cpp b/src/openrct2/title/TitleSequencePlayer.cpp index 0505b531ef..49df5c4c75 100644 --- a/src/openrct2/title/TitleSequencePlayer.cpp +++ b/src/openrct2/title/TitleSequencePlayer.cpp @@ -361,16 +361,8 @@ private: { bool isScenario = String::Equals(extension, ".sc4", true); IS4Importer * s4Importer = CreateS4Importer(); - if (isScenario) - { - s4Importer->LoadScenario(path); - s4Importer->Import(); - } - else - { - s4Importer->LoadSavedGame(path); - s4Importer->Import(); - } + s4Importer->Load(path); + s4Importer->Import(); PrepareParkForPlayback(isScenario); success = true; }