Remove remnants of STEX support

This commit is contained in:
Michael Steenbeek 2018-08-29 23:29:45 +02:00 committed by GitHub
parent 64b923e5c1
commit 5cd4057c76
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 32 additions and 236 deletions

View File

@ -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 = "<group>"; };
F76C842B1EC4E7CC00FA49E2 /* SmallSceneryObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SmallSceneryObject.cpp; sourceTree = "<group>"; };
F76C842C1EC4E7CC00FA49E2 /* SmallSceneryObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SmallSceneryObject.h; sourceTree = "<group>"; };
F76C842D1EC4E7CC00FA49E2 /* StexObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StexObject.cpp; sourceTree = "<group>"; };
F76C842E1EC4E7CC00FA49E2 /* StexObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StexObject.h; sourceTree = "<group>"; };
F76C842F1EC4E7CC00FA49E2 /* StringTable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = StringTable.cpp; sourceTree = "<group>"; };
F76C84301EC4E7CC00FA49E2 /* StringTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StringTable.h; sourceTree = "<group>"; };
F76C84311EC4E7CC00FA49E2 /* WallObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WallObject.cpp; sourceTree = "<group>"; };
@ -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 */,

View File

@ -25,9 +25,9 @@
#include <openrct2/object/ObjectManager.h>
#include <openrct2/object/ObjectRepository.h>
#include <openrct2/object/RideObject.h>
#include <openrct2/object/StexObject.h>
#include <openrct2/platform/platform.h>
#include <openrct2/ride/RideGroupManager.h>
#include <openrct2/scenario/Scenario.h>
#include <openrct2/sprites.h>
#include <openrct2/util/Util.h>
#include <openrct2/windows/Intent.h>
@ -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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<rct_object_entry>();
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");

View File

@ -440,7 +440,6 @@ private:
}
else
{
log_info("Ignoring missing STEX entry.");
entry = {};
continue;
}

View File

@ -36,7 +36,6 @@
#include "ObjectList.h"
#include "ObjectManager.h"
#include "RideObject.h"
#include "StexObject.h"
#include <algorithm>
#include <memory>
@ -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<StexObject*>(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()

View File

@ -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<uint8_t>();
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);
}

View File

@ -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;
};

View File

@ -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);

View File

@ -320,7 +320,7 @@ private:
}
}
scenario_translate(&entry, &s6Info->entry);
scenario_translate(&entry);
return entry;
}
};

View File

@ -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);