Use unique_ptr for TitleSequenceParkHandle Stream

Co-authored-by: Gabriel Guedes <gabriel.guedesaz@gmail.com>
This commit is contained in:
Matt 2020-09-28 17:17:40 +03:00
parent e3a4d6a245
commit f765ed2f94
No known key found for this signature in database
GPG Key ID: 6D4C24A61C93E208
4 changed files with 9 additions and 9 deletions

View File

@ -279,7 +279,7 @@ private:
auto parkHandle = TitleSequenceGetParkHandle(*_sequence, saveIndex);
if (parkHandle != nullptr)
{
loadSuccess = LoadParkFromStream(static_cast<OpenRCT2::IStream*>(parkHandle->Stream), parkHandle->HintPath);
loadSuccess = LoadParkFromStream(parkHandle->Stream.get(), parkHandle->HintPath);
}
if (!loadSuccess)
{

View File

@ -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<int16_t>(_editingTitleSequence->Saves.size()))
{
auto handle = TitleSequenceGetParkHandle(*_editingTitleSequence, w->selected_list_item);
auto stream = static_cast<OpenRCT2::IStream*>(handle->Stream);
bool isScenario = ParkImporter::ExtensionIsScenario(handle->HintPath);
try
{
auto& objectMgr = OpenRCT2::GetContext()->GetObjectManager();
auto parkImporter = std::unique_ptr<IParkImporter>(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();

View File

@ -114,11 +114,11 @@ std::unique_ptr<TitleSequenceParkHandle> TitleSequenceGetParkHandle(TitleSequenc
auto data = zip->GetFileData(filename);
auto dataForMs = Memory::Allocate<uint8_t>(data.size());
std::copy_n(data.data(), data.size(), dataForMs);
auto ms = new OpenRCT2::MemoryStream(
auto ms = std::make_unique<OpenRCT2::MemoryStream>(
dataForMs, data.size(), OpenRCT2::MEMORY_ACCESS::READ | OpenRCT2::MEMORY_ACCESS::OWNER);
handle = std::make_unique<TitleSequenceParkHandle>();
handle->Stream = ms;
handle->Stream = std::move(ms);
handle->HintPath = filename;
}
else
@ -129,10 +129,10 @@ std::unique_ptr<TitleSequenceParkHandle> TitleSequenceGetParkHandle(TitleSequenc
else
{
auto absolutePath = Path::Combine(seq.Path, filename);
OpenRCT2::FileStream* fileStream = nullptr;
std::unique_ptr<OpenRCT2::IStream> fileStream = nullptr;
try
{
fileStream = new OpenRCT2::FileStream(absolutePath, OpenRCT2::FILE_MODE_OPEN);
fileStream = std::make_unique<OpenRCT2::FileStream>(absolutePath, OpenRCT2::FILE_MODE_OPEN);
}
catch (const IOException& exception)
{
@ -142,7 +142,7 @@ std::unique_ptr<TitleSequenceParkHandle> TitleSequenceGetParkHandle(TitleSequenc
if (fileStream != nullptr)
{
handle = std::make_unique<TitleSequenceParkHandle>();
handle->Stream = fileStream;
handle->Stream = std::move(fileStream);
handle->HintPath = filename;
}
}

View File

@ -11,6 +11,7 @@
#include "../common.h"
#include "../localisation/Localisation.h"
#include "../openrct2/core/IStream.hpp"
#include <memory>
@ -54,7 +55,7 @@ struct TitleSequence
struct TitleSequenceParkHandle
{
std::string HintPath;
void* Stream;
std::unique_ptr<OpenRCT2::IStream> Stream;
};
enum TITLE_SCRIPT