From e2aebb2236f9361b47213fd8f7197ff73dfbdb6c Mon Sep 17 00:00:00 2001 From: Ted John Date: Wed, 8 Feb 2017 22:11:46 +0000 Subject: [PATCH] Use streams for reading title sequence scripts --- src/openrct2/title/TitleSequence.cpp | 19 +++++++++---------- src/openrct2/title/TitleSequence.h | 2 -- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/openrct2/title/TitleSequence.cpp b/src/openrct2/title/TitleSequence.cpp index 2181254a74..2154fb99c6 100644 --- a/src/openrct2/title/TitleSequence.cpp +++ b/src/openrct2/title/TitleSequence.cpp @@ -15,7 +15,6 @@ #pragma endregion #include -#include #include "../common.h" #include "../core/Collections.hpp" #include "../core/Console.hpp" @@ -39,7 +38,7 @@ static std::vector GetSaves(const utf8 * path); static std::vector GetSaves(IZipArchive * zip); static std::vector LegacyScriptRead(utf8 * script, size_t scriptLength, std::vector saves); -static void LegacyScriptGetLine(SDL_RWops * file, char * parts); +static void LegacyScriptGetLine(IStream * stream, char * parts); static void * ReadScriptFile(const utf8 * path, size_t * outSize); static utf8 * LegacyScriptWrite(TitleSequence * seq); @@ -392,10 +391,11 @@ static std::vector GetSaves(IZipArchive * zip) static std::vector LegacyScriptRead(utf8 * script, size_t scriptLength, std::vector saves) { std::vector commands; - SDL_RWops * file = SDL_RWFromMem(script, (sint32)scriptLength); - do { + auto fs = MemoryStream(script, scriptLength); + do + { char parts[3 * 128], *token, *part1, *part2; - LegacyScriptGetLine(file, parts); + LegacyScriptGetLine(&fs, parts); token = &parts[0 * 128]; part1 = &parts[1 * 128]; @@ -466,13 +466,12 @@ static std::vector LegacyScriptRead(utf8 * script, size_t scriptLe { commands.push_back(command); } - } while (SDL_RWtell(file) < (sint32)scriptLength); - SDL_RWclose(file); - + } + while (fs.GetPosition() < scriptLength); return commands; } -static void LegacyScriptGetLine(SDL_RWops * file, char * parts) +static void LegacyScriptGetLine(IStream * stream, char * parts) { for (sint32 i = 0; i < 3; i++) { @@ -486,7 +485,7 @@ static void LegacyScriptGetLine(SDL_RWops * file, char * parts) for (; part < 3;) { sint32 c = 0; - if (SDL_RWread(file, &c, 1, 1) != 1) + if (stream->TryRead(&c, 1) != 1) { c = EOF; } diff --git a/src/openrct2/title/TitleSequence.h b/src/openrct2/title/TitleSequence.h index 924adb687e..259d2354fd 100644 --- a/src/openrct2/title/TitleSequence.h +++ b/src/openrct2/title/TitleSequence.h @@ -18,8 +18,6 @@ #include "../common.h" -struct SDL_RWops; - typedef struct TitleCommand { uint8 Type;