From 5cd4057c7637006fbc26c3ff57086412f1d419b3 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Wed, 29 Aug 2018 23:29:45 +0200 Subject: [PATCH] Remove remnants of STEX support --- OpenRCT2.xcodeproj/project.pbxproj | 6 -- .../windows/EditorObjectSelection.cpp | 4 +- .../windows/EditorObjectiveOptions.cpp | 41 ++--------- src/openrct2-ui/windows/ObjectLoadError.cpp | 3 - src/openrct2/EditorObjectSelectionSession.cpp | 4 +- src/openrct2/object/ObjectFactory.cpp | 35 ++++----- src/openrct2/object/ObjectManager.cpp | 1 - src/openrct2/object/ObjectRepository.cpp | 27 +------ src/openrct2/object/StexObject.cpp | 71 ------------------- src/openrct2/object/StexObject.h | 42 ----------- src/openrct2/scenario/Scenario.cpp | 30 -------- src/openrct2/scenario/ScenarioRepository.cpp | 2 +- src/openrct2/scenario/ScenarioRepository.h | 2 +- 13 files changed, 32 insertions(+), 236 deletions(-) delete mode 100644 src/openrct2/object/StexObject.cpp delete mode 100644 src/openrct2/object/StexObject.h diff --git a/OpenRCT2.xcodeproj/project.pbxproj b/OpenRCT2.xcodeproj/project.pbxproj index 5577afc288..e8274e0f26 100644 --- a/OpenRCT2.xcodeproj/project.pbxproj +++ b/OpenRCT2.xcodeproj/project.pbxproj @@ -455,7 +455,6 @@ F76C86741EC4E88400FA49E2 /* RideObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84261EC4E7CC00FA49E2 /* RideObject.cpp */; }; F76C86761EC4E88400FA49E2 /* SceneryGroupObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84281EC4E7CC00FA49E2 /* SceneryGroupObject.cpp */; }; F76C86791EC4E88400FA49E2 /* SmallSceneryObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C842B1EC4E7CC00FA49E2 /* SmallSceneryObject.cpp */; }; - F76C867B1EC4E88400FA49E2 /* StexObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C842D1EC4E7CC00FA49E2 /* StexObject.cpp */; }; F76C867D1EC4E88400FA49E2 /* StringTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C842F1EC4E7CC00FA49E2 /* StringTable.cpp */; }; F76C867F1EC4E88400FA49E2 /* WallObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84311EC4E7CC00FA49E2 /* WallObject.cpp */; }; F76C86811EC4E88400FA49E2 /* WaterObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84331EC4E7CC00FA49E2 /* WaterObject.cpp */; }; @@ -1541,8 +1540,6 @@ F76C842A1EC4E7CC00FA49E2 /* SceneryObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneryObject.h; sourceTree = ""; }; F76C842B1EC4E7CC00FA49E2 /* SmallSceneryObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SmallSceneryObject.cpp; sourceTree = ""; }; F76C842C1EC4E7CC00FA49E2 /* SmallSceneryObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SmallSceneryObject.h; sourceTree = ""; }; - F76C842D1EC4E7CC00FA49E2 /* StexObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StexObject.cpp; sourceTree = ""; }; - F76C842E1EC4E7CC00FA49E2 /* StexObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StexObject.h; sourceTree = ""; }; F76C842F1EC4E7CC00FA49E2 /* StringTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StringTable.cpp; sourceTree = ""; }; F76C84301EC4E7CC00FA49E2 /* StringTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StringTable.h; sourceTree = ""; }; F76C84311EC4E7CC00FA49E2 /* WallObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WallObject.cpp; sourceTree = ""; }; @@ -2648,8 +2645,6 @@ F76C842A1EC4E7CC00FA49E2 /* SceneryObject.h */, F76C842B1EC4E7CC00FA49E2 /* SmallSceneryObject.cpp */, F76C842C1EC4E7CC00FA49E2 /* SmallSceneryObject.h */, - F76C842D1EC4E7CC00FA49E2 /* StexObject.cpp */, - F76C842E1EC4E7CC00FA49E2 /* StexObject.h */, F76C842F1EC4E7CC00FA49E2 /* StringTable.cpp */, F76C84301EC4E7CC00FA49E2 /* StringTable.h */, F76C84311EC4E7CC00FA49E2 /* WallObject.cpp */, @@ -3878,7 +3873,6 @@ C68878CD20289B9B0084B384 /* DefaultObjects.cpp in Sources */, 939A359A20C12FC800630B3F /* Paint.Litter.cpp in Sources */, C688788220289ADE0084B384 /* Rect.cpp in Sources */, - F76C867B1EC4E88400FA49E2 /* StexObject.cpp in Sources */, 93F9DA3920B46FB800D1BE92 /* ObjectJsonHelpers.cpp in Sources */, C688787320289A780084B384 /* RideRatings.cpp in Sources */, C688790D20289B9B0084B384 /* CircusShow.cpp in Sources */, diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 544ef5f4d6..aee0e23b92 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -25,9 +25,9 @@ #include #include #include -#include #include #include +#include #include #include #include @@ -841,7 +841,7 @@ static void window_editor_object_selection_invalidate(rct_window* w) for (int32_t i = 0; i < OBJECT_TYPE_COUNT; i++) { auto widget = &w->widgets[WIDX_TAB_1 + i]; - if ((!advancedMode && ObjectSelectionPages[i].IsAdvanced) || i == OBJECT_TYPE_SCENARIO_TEXT) + if (!advancedMode && ObjectSelectionPages[i].IsAdvanced) { widget->type = WWT_EMPTY; } diff --git a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp index 8fb7e79049..66775260a7 100644 --- a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp +++ b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp @@ -837,12 +837,6 @@ static void window_editor_objective_options_main_invalidate(rct_window* w) window_editor_objective_options_set_pressed_tab(w); - auto stex = (rct_stex_entry*)object_entry_get_chunk(OBJECT_TYPE_SCENARIO_TEXT, 0); - if (stex == nullptr) - w->disabled_widgets &= ~((1 << WIDX_PARK_NAME) | (1 << WIDX_SCENARIO_NAME)); - else - w->disabled_widgets |= ((1 << WIDX_PARK_NAME) | (1 << WIDX_SCENARIO_NAME)); - switch (gScenarioObjectiveType) { case OBJECTIVE_GUESTS_BY: @@ -997,15 +991,7 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi y = w->y + w->widgets[WIDX_PARK_NAME].top; width = w->widgets[WIDX_PARK_NAME].left - 16; - auto stex = (rct_stex_entry*)object_entry_get_chunk(OBJECT_TYPE_SCENARIO_TEXT, 0); - if (stex != nullptr) - { - set_format_arg(0, rct_string_id, stex->park_name); - } - else - { - set_format_arg(0, rct_string_id, gParkName); - } + set_format_arg(0, rct_string_id, gParkName); set_format_arg(2, uint32_t, gParkNameArgs); gfx_draw_string_left_clipped(dpi, STR_WINDOW_PARK_NAME, gCommonFormatArgs, COLOUR_BLACK, x, y, width); @@ -1014,16 +1000,8 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi y = w->y + w->widgets[WIDX_SCENARIO_NAME].top; width = w->widgets[WIDX_SCENARIO_NAME].left - 16; - if (stex != nullptr) - { - set_format_arg(0, rct_string_id, stex->scenario_name); - set_format_arg(2, uint32_t, gParkNameArgs); - } - else - { - set_format_arg(0, rct_string_id, STR_STRING); - set_format_arg(2, const char*, gS6Info.name); - } + set_format_arg(0, rct_string_id, STR_STRING); + set_format_arg(2, const char*, gS6Info.name); gfx_draw_string_left_clipped(dpi, STR_WINDOW_SCENARIO_NAME, gCommonFormatArgs, COLOUR_BLACK, x, y, width); @@ -1037,16 +1015,9 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi y = w->y + w->widgets[WIDX_DETAILS].top + 10; width = w->widgets[WIDX_DETAILS].left - 4; - if (stex != nullptr) - { - set_format_arg(0, rct_string_id, stex->details); - set_format_arg(2, uint32_t, gParkNameArgs); - } - else - { - set_format_arg(0, rct_string_id, STR_STRING); - set_format_arg(2, const char*, gS6Info.details); - } + set_format_arg(0, rct_string_id, STR_STRING); + set_format_arg(2, const char*, gS6Info.details); + gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, x, y, width, STR_BLACK_STRING, COLOUR_BLACK); // Scenario category label diff --git a/src/openrct2-ui/windows/ObjectLoadError.cpp b/src/openrct2-ui/windows/ObjectLoadError.cpp index a6c71020cb..bca8314ca4 100644 --- a/src/openrct2-ui/windows/ObjectLoadError.cpp +++ b/src/openrct2-ui/windows/ObjectLoadError.cpp @@ -138,9 +138,6 @@ static rct_string_id get_object_type_string(const rct_object_entry* entry) case OBJECT_TYPE_WATER: result = STR_OBJECT_SELECTION_WATER; break; - case OBJECT_TYPE_SCENARIO_TEXT: - result = STR_OBJECT_SELECTION_SCENARIO_DESCRIPTION; - break; default: result = STR_UNKNOWN_OBJECT_TYPE; } diff --git a/src/openrct2/EditorObjectSelectionSession.cpp b/src/openrct2/EditorObjectSelectionSession.cpp index 1cf6edc295..922460b42c 100644 --- a/src/openrct2/EditorObjectSelectionSession.cpp +++ b/src/openrct2/EditorObjectSelectionSession.cpp @@ -544,8 +544,8 @@ int32_t editor_remove_unused_objects() const ObjectRepositoryItem* item = &items[i]; uint8_t objectType = object_entry_get_type(&item->ObjectEntry); - if (objectType == OBJECT_TYPE_PARK_ENTRANCE || objectType == OBJECT_TYPE_SCENARIO_TEXT - || objectType == OBJECT_TYPE_WATER || objectType == OBJECT_TYPE_SCENERY_GROUP) + if (objectType == OBJECT_TYPE_PARK_ENTRANCE || objectType == OBJECT_TYPE_WATER + || objectType == OBJECT_TYPE_SCENERY_GROUP) { continue; } diff --git a/src/openrct2/object/ObjectFactory.cpp b/src/openrct2/object/ObjectFactory.cpp index 60b29256cc..da2a6c2921 100644 --- a/src/openrct2/object/ObjectFactory.cpp +++ b/src/openrct2/object/ObjectFactory.cpp @@ -31,7 +31,6 @@ #include "RideObject.h" #include "SceneryGroupObject.h" #include "SmallSceneryObject.h" -#include "StexObject.h" #include "WallObject.h" #include "WaterObject.h" @@ -200,23 +199,27 @@ namespace ObjectFactory auto chunkReader = SawyerChunkReader(&fs); rct_object_entry entry = fs.ReadValue(); - result = CreateObject(entry); - utf8 objectName[DAT_NAME_LENGTH + 1] = { 0 }; - object_entry_get_name_fixed(objectName, sizeof(objectName), &entry); - log_verbose(" entry: { 0x%08X, \"%s\", 0x%08X }", entry.flags, objectName, entry.checksum); - - auto chunk = chunkReader.ReadChunk(); - log_verbose(" size: %zu", chunk->GetLength()); - - auto chunkStream = MemoryStream(chunk->GetData(), chunk->GetLength()); - auto readContext = ReadObjectContext(objectRepository, objectName, !gOpenRCT2Headless, nullptr); - ReadObjectLegacy(result, &readContext, &chunkStream); - if (readContext.WasError()) + if (object_entry_get_type(&entry) != OBJECT_TYPE_SCENARIO_TEXT) { - throw std::runtime_error("Object has errors"); + result = CreateObject(entry); + + utf8 objectName[DAT_NAME_LENGTH + 1] = { 0 }; + object_entry_get_name_fixed(objectName, sizeof(objectName), &entry); + log_verbose(" entry: { 0x%08X, \"%s\", 0x%08X }", entry.flags, objectName, entry.checksum); + + auto chunk = chunkReader.ReadChunk(); + log_verbose(" size: %zu", chunk->GetLength()); + + auto chunkStream = MemoryStream(chunk->GetData(), chunk->GetLength()); + auto readContext = ReadObjectContext(objectRepository, objectName, !gOpenRCT2Headless, nullptr); + ReadObjectLegacy(result, &readContext, &chunkStream); + if (readContext.WasError()) + { + throw std::runtime_error("Object has errors"); + } + result->SetSourceGames({ object_entry_get_source_game_legacy(&entry) }); } - result->SetSourceGames({ object_entry_get_source_game_legacy(&entry) }); } catch (const std::exception&) { @@ -292,7 +295,7 @@ namespace ObjectFactory result = new WaterObject(entry); break; case OBJECT_TYPE_SCENARIO_TEXT: - result = new StexObject(entry); + result = nullptr; break; default: throw std::runtime_error("Invalid object type"); diff --git a/src/openrct2/object/ObjectManager.cpp b/src/openrct2/object/ObjectManager.cpp index ba6c9c835d..abd29f5f7f 100644 --- a/src/openrct2/object/ObjectManager.cpp +++ b/src/openrct2/object/ObjectManager.cpp @@ -440,7 +440,6 @@ private: } else { - log_info("Ignoring missing STEX entry."); entry = {}; continue; } diff --git a/src/openrct2/object/ObjectRepository.cpp b/src/openrct2/object/ObjectRepository.cpp index 94df82e747..96a6b6b47e 100644 --- a/src/openrct2/object/ObjectRepository.cpp +++ b/src/openrct2/object/ObjectRepository.cpp @@ -36,7 +36,6 @@ #include "ObjectList.h" #include "ObjectManager.h" #include "RideObject.h" -#include "StexObject.h" #include #include @@ -671,7 +670,7 @@ void* object_repository_load_object(const rct_object_entry* objectEntry) return (void*)object; } -void scenario_translate(scenario_index_entry* scenarioEntry, const rct_object_entry* stexObjectEntry) +void scenario_translate(scenario_index_entry* scenarioEntry) { rct_string_id localisedStringIds[3]; if (language_get_localised_scenario_strings(scenarioEntry->name, localisedStringIds)) @@ -685,30 +684,6 @@ void scenario_translate(scenario_index_entry* scenarioEntry, const rct_object_en String::Set(scenarioEntry->details, sizeof(scenarioEntry->details), language_get_string(localisedStringIds[2])); } } - else - { - // Checks for a scenario string object (possibly for localisation) - if ((stexObjectEntry->flags & 0xFF) != 255) - { - auto objectRepository = GetContext()->GetObjectRepository(); - const ObjectRepositoryItem* ori = objectRepository->FindObject(stexObjectEntry); - if (ori != nullptr) - { - Object* object = objectRepository->LoadObject(ori); - if (object != nullptr) - { - auto stexObject = static_cast(object); - auto scenarioName = stexObject->GetScenarioName(); - auto scenarioDetails = stexObject->GetScenarioDetails(); - - String::Set(scenarioEntry->name, sizeof(scenarioEntry->name), scenarioName.c_str()); - String::Set(scenarioEntry->details, sizeof(scenarioEntry->details), scenarioDetails.c_str()); - - delete object; - } - } - } - } } size_t object_repository_get_items_count() diff --git a/src/openrct2/object/StexObject.cpp b/src/openrct2/object/StexObject.cpp deleted file mode 100644 index bec9c18e60..0000000000 --- a/src/openrct2/object/StexObject.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2014-2018 OpenRCT2 developers - * - * For a complete list of all authors, please refer to contributors.md - * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 - * - * OpenRCT2 is licensed under the GNU General Public License version 3. - *****************************************************************************/ - -#include "StexObject.h" - -#include "../core/IStream.hpp" -#include "../localisation/Localisation.h" - -void StexObject::ReadLegacy(IReadObjectContext* context, IStream* stream) -{ - stream->Seek(6, STREAM_SEEK_CURRENT); - _legacyType.var_06 = stream->ReadValue(); - stream->Seek(1, STREAM_SEEK_CURRENT); - - GetStringTable().Read(context, stream, OBJ_STRING_ID_SCENARIO_NAME); - GetStringTable().Read(context, stream, OBJ_STRING_ID_PARK_NAME); - GetStringTable().Read(context, stream, OBJ_STRING_ID_SCENARIO_DETAILS); -} - -void StexObject::Load() -{ - GetStringTable().Sort(); - _legacyType.scenario_name = language_allocate_object_string(GetScenarioName()); - _legacyType.park_name = language_allocate_object_string(GetParkName()); - _legacyType.details = language_allocate_object_string(GetScenarioDetails()); -} - -void StexObject::Unload() -{ - language_free_object_string(_legacyType.scenario_name); - language_free_object_string(_legacyType.park_name); - language_free_object_string(_legacyType.details); - - _legacyType.scenario_name = 0; - _legacyType.park_name = 0; - _legacyType.details = 0; -} - -void StexObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t height) const -{ - // Write (no image) - int32_t x = width / 2; - int32_t y = height / 2; - gfx_draw_string_centred(dpi, STR_WINDOW_NO_IMAGE, x, y, COLOUR_BLACK, nullptr); -} - -std::string StexObject::GetName() const -{ - return GetScenarioName(); -} - -std::string StexObject::GetScenarioName() const -{ - return GetStringTable().GetString(OBJ_STRING_ID_SCENARIO_NAME); -} - -std::string StexObject::GetScenarioDetails() const -{ - return GetStringTable().GetString(OBJ_STRING_ID_SCENARIO_DETAILS); -} - -std::string StexObject::GetParkName() const -{ - return GetStringTable().GetString(OBJ_STRING_ID_PARK_NAME); -} diff --git a/src/openrct2/object/StexObject.h b/src/openrct2/object/StexObject.h deleted file mode 100644 index c3ba207aa9..0000000000 --- a/src/openrct2/object/StexObject.h +++ /dev/null @@ -1,42 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2014-2018 OpenRCT2 developers - * - * For a complete list of all authors, please refer to contributors.md - * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 - * - * OpenRCT2 is licensed under the GNU General Public License version 3. - *****************************************************************************/ - -#pragma once - -#include "../scenario/Scenario.h" -#include "Object.h" - -class StexObject final : public Object -{ -private: - rct_stex_entry _legacyType = {}; - -public: - explicit StexObject(const rct_object_entry& entry) - : Object(entry) - { - } - - void* GetLegacyData() override - { - return &_legacyType; - } - - void ReadLegacy(IReadObjectContext* context, IStream* stream) override; - void Load() override; - void Unload() override; - - void DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t height) const override; - - std::string GetName() const override; - - std::string GetScenarioName() const; - std::string GetScenarioDetails() const; - std::string GetParkName() const; -}; diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index 86713c30f8..55b428f183 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -131,26 +131,6 @@ void scenario_begin() safe_strcpy(gScenarioDetails, language_get_string(localisedStringIds[2]), 256); } } - else - { - auto stex = (rct_stex_entry*)object_entry_get_chunk(OBJECT_TYPE_SCENARIO_TEXT, 0); - if (stex != nullptr) - { - char* buffer = gCommonStringFormatBuffer; - - // Set localised park name - format_string(buffer, 256, stex->park_name, nullptr); - park_set_name(buffer); - - // Set localised scenario name - format_string(buffer, 256, stex->scenario_name, nullptr); - safe_strcpy(gScenarioName, buffer, 64); - - // Set localised scenario details - format_string(buffer, 256, stex->details, nullptr); - safe_strcpy(gScenarioDetails, buffer, 256); - } - } } // Set the last saved game path @@ -665,16 +645,6 @@ bool scenario_prepare_for_save() { gS6Info.entry.flags = 255; - auto stex = (rct_stex_entry*)object_entry_get_chunk(OBJECT_TYPE_SCENARIO_TEXT, 0); - if (stex != nullptr) - { - char buffer[256]; - format_string(buffer, 256, stex->scenario_name, nullptr); - safe_strcpy(gS6Info.name, buffer, sizeof(gS6Info.name)); - - memcpy(&gS6Info.entry, object_entry_get_entry(OBJECT_TYPE_SCENARIO_TEXT, 0), sizeof(rct_object_entry)); - } - if (gS6Info.name[0] == 0) format_string(gS6Info.name, 64, gParkName, &gParkNameArgs); diff --git a/src/openrct2/scenario/ScenarioRepository.cpp b/src/openrct2/scenario/ScenarioRepository.cpp index 7aab25e497..714240d1c0 100644 --- a/src/openrct2/scenario/ScenarioRepository.cpp +++ b/src/openrct2/scenario/ScenarioRepository.cpp @@ -320,7 +320,7 @@ private: } } - scenario_translate(&entry, &s6Info->entry); + scenario_translate(&entry); return entry; } }; diff --git a/src/openrct2/scenario/ScenarioRepository.h b/src/openrct2/scenario/ScenarioRepository.h index 8d9cd7df0a..31146be112 100644 --- a/src/openrct2/scenario/ScenarioRepository.h +++ b/src/openrct2/scenario/ScenarioRepository.h @@ -80,4 +80,4 @@ void scenario_repository_scan(); size_t scenario_repository_get_count(); const scenario_index_entry* scenario_repository_get_by_index(size_t index); bool scenario_repository_try_record_highscore(const utf8* scenarioFileName, money32 companyValue, const utf8* name); -void scenario_translate(scenario_index_entry* scenarioEntry, const struct rct_object_entry* stexObjectEntry); +void scenario_translate(scenario_index_entry* scenarioEntry);