diff --git a/src/openrct2-ui/title/TitleSequencePlayer.cpp b/src/openrct2-ui/title/TitleSequencePlayer.cpp index fef9dffe3e..d8e525327c 100644 --- a/src/openrct2-ui/title/TitleSequencePlayer.cpp +++ b/src/openrct2-ui/title/TitleSequencePlayer.cpp @@ -279,7 +279,7 @@ private: auto parkHandle = TitleSequenceGetParkHandle(*_sequence, saveIndex); if (parkHandle != nullptr) { - loadSuccess = LoadParkFromStream(static_cast(parkHandle->Stream), parkHandle->HintPath); + loadSuccess = LoadParkFromStream(parkHandle->Stream.get(), parkHandle->HintPath); } if (!loadSuccess) { diff --git a/src/openrct2-ui/windows/TitleEditor.cpp b/src/openrct2-ui/windows/TitleEditor.cpp index fcb0018b22..b99cdd6505 100644 --- a/src/openrct2-ui/windows/TitleEditor.cpp +++ b/src/openrct2-ui/windows/TitleEditor.cpp @@ -344,13 +344,12 @@ static void window_title_editor_mouseup(rct_window* w, rct_widgetindex widgetInd if (w->selected_list_item >= 0 && w->selected_list_item < static_cast(_editingTitleSequence->Saves.size())) { auto handle = TitleSequenceGetParkHandle(*_editingTitleSequence, w->selected_list_item); - auto stream = static_cast(handle->Stream); bool isScenario = ParkImporter::ExtensionIsScenario(handle->HintPath); try { auto& objectMgr = OpenRCT2::GetContext()->GetObjectManager(); auto parkImporter = std::unique_ptr(ParkImporter::Create(handle->HintPath)); - auto result = parkImporter->LoadFromStream(stream, isScenario); + auto result = parkImporter->LoadFromStream(handle->Stream.get(), isScenario); objectMgr.LoadObjects(result.RequiredObjects.data(), result.RequiredObjects.size()); parkImporter->Import(); diff --git a/src/openrct2/title/TitleSequence.cpp b/src/openrct2/title/TitleSequence.cpp index abe9dc119c..ba603ffdfa 100644 --- a/src/openrct2/title/TitleSequence.cpp +++ b/src/openrct2/title/TitleSequence.cpp @@ -114,11 +114,11 @@ std::unique_ptr TitleSequenceGetParkHandle(TitleSequenc auto data = zip->GetFileData(filename); auto dataForMs = Memory::Allocate(data.size()); std::copy_n(data.data(), data.size(), dataForMs); - auto ms = new OpenRCT2::MemoryStream( + auto ms = std::make_unique( dataForMs, data.size(), OpenRCT2::MEMORY_ACCESS::READ | OpenRCT2::MEMORY_ACCESS::OWNER); handle = std::make_unique(); - handle->Stream = ms; + handle->Stream = std::move(ms); handle->HintPath = filename; } else @@ -129,10 +129,10 @@ std::unique_ptr TitleSequenceGetParkHandle(TitleSequenc else { auto absolutePath = Path::Combine(seq.Path, filename); - OpenRCT2::FileStream* fileStream = nullptr; + std::unique_ptr fileStream = nullptr; try { - fileStream = new OpenRCT2::FileStream(absolutePath, OpenRCT2::FILE_MODE_OPEN); + fileStream = std::make_unique(absolutePath, OpenRCT2::FILE_MODE_OPEN); } catch (const IOException& exception) { @@ -142,7 +142,7 @@ std::unique_ptr TitleSequenceGetParkHandle(TitleSequenc if (fileStream != nullptr) { handle = std::make_unique(); - handle->Stream = fileStream; + handle->Stream = std::move(fileStream); handle->HintPath = filename; } } diff --git a/src/openrct2/title/TitleSequence.h b/src/openrct2/title/TitleSequence.h index a3f1e23934..d384e25c8f 100644 --- a/src/openrct2/title/TitleSequence.h +++ b/src/openrct2/title/TitleSequence.h @@ -11,6 +11,7 @@ #include "../common.h" #include "../localisation/Localisation.h" +#include "../openrct2/core/IStream.hpp" #include @@ -54,7 +55,7 @@ struct TitleSequence struct TitleSequenceParkHandle { std::string HintPath; - void* Stream; + std::unique_ptr Stream; }; enum TITLE_SCRIPT