From f6d6d935808f94958724c1c086b14288dc714e9d Mon Sep 17 00:00:00 2001 From: Ted John Date: Thu, 30 Jun 2016 21:55:18 +0100 Subject: [PATCH] fix highlight object in object selection --- src/object/BannerObject.cpp | 2 +- src/object/BannerObject.h | 2 +- src/object/EntranceObject.cpp | 2 +- src/object/EntranceObject.h | 2 +- src/object/FootpathItemObject.cpp | 2 +- src/object/FootpathItemObject.h | 2 +- src/object/FootpathObject.cpp | 2 +- src/object/FootpathObject.h | 2 +- src/object/LargeSceneryObject.cpp | 2 +- src/object/LargeSceneryObject.h | 2 +- src/object/Object.h | 9 +- src/object/ObjectRepository.cpp | 31 ++++++ src/object/ObjectRepository.h | 4 + src/object/RideObject.cpp | 6 +- src/object/RideObject.h | 6 +- src/object/SceneryGroupObject.cpp | 2 +- src/object/SceneryGroupObject.h | 2 +- src/object/SmallSceneryObject.cpp | 2 +- src/object/SmallSceneryObject.h | 2 +- src/object/StexObject.cpp | 8 +- src/object/StexObject.h | 8 +- src/object/StringTable.cpp | 2 +- src/object/StringTable.h | 2 +- src/object/WallObject.cpp | 2 +- src/object/WallObject.h | 2 +- src/object/WaterObject.cpp | 2 +- src/object/WaterObject.h | 2 +- src/windows/editor_object_selection.c | 133 +++++++++----------------- 28 files changed, 121 insertions(+), 124 deletions(-) diff --git a/src/object/BannerObject.cpp b/src/object/BannerObject.cpp index e4f317ffe9..2eb25d1cbc 100644 --- a/src/object/BannerObject.cpp +++ b/src/object/BannerObject.cpp @@ -68,7 +68,7 @@ void BannerObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } -const utf8 * BannerObject::GetName() +const utf8 * BannerObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); return name != nullptr ? name : ""; diff --git a/src/object/BannerObject.h b/src/object/BannerObject.h index afb701f560..dfc4bd1558 100644 --- a/src/object/BannerObject.h +++ b/src/object/BannerObject.h @@ -38,5 +38,5 @@ public: void Load() override; void Unload() override; - const utf8 * GetName() override; + const utf8 * GetName() const override; }; diff --git a/src/object/EntranceObject.cpp b/src/object/EntranceObject.cpp index 0cb83caa53..dc9cfcc9ab 100644 --- a/src/object/EntranceObject.cpp +++ b/src/object/EntranceObject.cpp @@ -51,7 +51,7 @@ void EntranceObject::Unload() gfx_object_free_images(_legacyType.image_id, GetImageTable()->GetCount()); } -const utf8 * EntranceObject::GetName() +const utf8 * EntranceObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); return name != nullptr ? name : ""; diff --git a/src/object/EntranceObject.h b/src/object/EntranceObject.h index 08091cbcd5..781984cf55 100644 --- a/src/object/EntranceObject.h +++ b/src/object/EntranceObject.h @@ -37,5 +37,5 @@ public: void Load() override; void Unload() override; - const utf8 * GetName() override; + const utf8 * GetName() const override; }; diff --git a/src/object/FootpathItemObject.cpp b/src/object/FootpathItemObject.cpp index 44049e931a..e4f2e3c6b5 100644 --- a/src/object/FootpathItemObject.cpp +++ b/src/object/FootpathItemObject.cpp @@ -67,7 +67,7 @@ void FootpathItemObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } -const utf8 * FootpathItemObject::GetName() +const utf8 * FootpathItemObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); return name != nullptr ? name : ""; diff --git a/src/object/FootpathItemObject.h b/src/object/FootpathItemObject.h index 83ed82bd55..00f947b453 100644 --- a/src/object/FootpathItemObject.h +++ b/src/object/FootpathItemObject.h @@ -38,5 +38,5 @@ public: void Load() override; void Unload() override; - const utf8 * GetName() override; + const utf8 * GetName() const override; }; diff --git a/src/object/FootpathObject.cpp b/src/object/FootpathObject.cpp index 50674b9536..752a8d1f0a 100644 --- a/src/object/FootpathObject.cpp +++ b/src/object/FootpathObject.cpp @@ -56,7 +56,7 @@ void FootpathObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } -const utf8 * FootpathObject::GetName() +const utf8 * FootpathObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); return name != nullptr ? name : ""; diff --git a/src/object/FootpathObject.h b/src/object/FootpathObject.h index 096758e66d..2f6e385081 100644 --- a/src/object/FootpathObject.h +++ b/src/object/FootpathObject.h @@ -37,5 +37,5 @@ public: void Load() override; void Unload() override; - const utf8 * GetName() override; + const utf8 * GetName() const override; }; diff --git a/src/object/LargeSceneryObject.cpp b/src/object/LargeSceneryObject.cpp index 240d62d0af..bc0ef75a27 100644 --- a/src/object/LargeSceneryObject.cpp +++ b/src/object/LargeSceneryObject.cpp @@ -102,7 +102,7 @@ void LargeSceneryObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } -const utf8 * LargeSceneryObject::GetName() +const utf8 * LargeSceneryObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); return name != nullptr ? name : ""; diff --git a/src/object/LargeSceneryObject.h b/src/object/LargeSceneryObject.h index 4f0ba88384..fa4b24bfe2 100644 --- a/src/object/LargeSceneryObject.h +++ b/src/object/LargeSceneryObject.h @@ -41,7 +41,7 @@ public: void Load() override; void Unload() override; - const utf8 * GetName() override; + const utf8 * GetName() const override; private: static rct_large_scenery_tile * ReadTiles(IStream * stream); diff --git a/src/object/Object.h b/src/object/Object.h index 690660bbb6..358342ac6c 100644 --- a/src/object/Object.h +++ b/src/object/Object.h @@ -36,8 +36,9 @@ private: ImageTable _imageTable; protected: - StringTable * GetStringTable() { return &_stringTable; } - ImageTable * GetImageTable() { return &_imageTable; } + StringTable * GetStringTable() { return &_stringTable; } + const StringTable * GetStringTable() const { return &_stringTable; } + ImageTable * GetImageTable() { return &_imageTable; } public: explicit Object(const rct_object_entry &entry); @@ -51,8 +52,8 @@ public: virtual void Load() abstract; virtual void Unload() abstract; - virtual uint8 GetObjectType() { return _objectEntry.flags & 0x0F; } - virtual const utf8 * GetName() abstract; + virtual uint8 GetObjectType() const { return _objectEntry.flags & 0x0F; } + virtual const utf8 * GetName() const abstract; virtual void SetRepositoryItem(ObjectRepositoryItem * item) const { } }; diff --git a/src/object/ObjectRepository.cpp b/src/object/ObjectRepository.cpp index 30f269653f..1ff6a9cbe9 100644 --- a/src/object/ObjectRepository.cpp +++ b/src/object/ObjectRepository.cpp @@ -31,6 +31,7 @@ #include "Object.h" #include "ObjectFactory.h" #include "ObjectRepository.h" +#include "RideObject.h" #include "StexObject.h" extern "C" @@ -664,6 +665,12 @@ extern "C" reset_type_to_ride_entry_index_map(); } + void * object_repository_load_object(const rct_object_entry * objectEntry) + { + IObjectRepository * objRepository = GetObjectRepository(); + return (void *)objRepository->LoadObject(objectEntry); + } + void object_repository_unload(size_t itemIndex) { // TODO @@ -781,4 +788,28 @@ extern "C" IObjectRepository * objectRepository = GetObjectRepository(); return objectRepository->FindObject(entry); } + + void object_delete(void * object) + { + delete ((Object *)object); + } + + const utf8 * object_get_description(const void * object) + { + const Object * baseObject = (const Object *)object; + switch (baseObject->GetObjectType()) { + case OBJECT_TYPE_RIDE: + { + const RideObject * rideObject = static_cast(baseObject); + return rideObject->GetDescription(); + } + case OBJECT_TYPE_SCENARIO_TEXT: + { + const StexObject * stexObject = static_cast(baseObject); + return stexObject->GetScenarioDetails(); + } + default: + return ""; + } + } } diff --git a/src/object/ObjectRepository.h b/src/object/ObjectRepository.h index 6856645014..72d1692cd2 100644 --- a/src/object/ObjectRepository.h +++ b/src/object/ObjectRepository.h @@ -78,6 +78,10 @@ IObjectRepository * GetObjectRepository(); size_t object_repository_get_items_count(); const ObjectRepositoryItem * object_repository_get_items(); const ObjectRepositoryItem * object_repository_find_object_by_entry(const rct_object_entry * entry); +void * object_repository_load_object(const rct_object_entry * objectEntry); void object_repository_unload(size_t itemIndex); +void object_delete(void * object); +const utf8 * object_get_description(const void * object); + #endif diff --git a/src/object/RideObject.cpp b/src/object/RideObject.cpp index fd0369a60d..02572b67f2 100644 --- a/src/object/RideObject.cpp +++ b/src/object/RideObject.cpp @@ -327,19 +327,19 @@ void RideObject::Unload() gfx_object_free_images(_legacyType.images_offset, GetImageTable()->GetCount()); } -const utf8 * RideObject::GetName() +const utf8 * RideObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); return name != nullptr ? name : ""; } -const utf8 * RideObject::GetDescription() +const utf8 * RideObject::GetDescription() const { const utf8 * description = GetStringTable()->GetString(OBJ_STRING_ID_DESCRIPTION); return description != nullptr ? description : ""; } -const utf8 * RideObject::GetCapacity() +const utf8 * RideObject::GetCapacity() const { const utf8 * capacity = GetStringTable()->GetString(OBJ_STRING_ID_CAPACITY); return capacity != nullptr ? capacity : ""; diff --git a/src/object/RideObject.h b/src/object/RideObject.h index 75ed233556..171c84ea54 100644 --- a/src/object/RideObject.h +++ b/src/object/RideObject.h @@ -40,9 +40,9 @@ public: void Load() override; void Unload() override; - const utf8 * GetName() override; - const utf8 * GetDescription(); - const utf8 * GetCapacity(); + const utf8 * GetName() const override; + const utf8 * GetDescription() const; + const utf8 * GetCapacity() const; void SetRepositoryItem(ObjectRepositoryItem * item) const; diff --git a/src/object/SceneryGroupObject.cpp b/src/object/SceneryGroupObject.cpp index 262654b01a..d6173d4630 100644 --- a/src/object/SceneryGroupObject.cpp +++ b/src/object/SceneryGroupObject.cpp @@ -85,7 +85,7 @@ void SceneryGroupObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } -const utf8 * SceneryGroupObject::GetName() +const utf8 * SceneryGroupObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); return name != nullptr ? name : ""; diff --git a/src/object/SceneryGroupObject.h b/src/object/SceneryGroupObject.h index 8f8b45ae48..b21685173a 100644 --- a/src/object/SceneryGroupObject.h +++ b/src/object/SceneryGroupObject.h @@ -40,7 +40,7 @@ public: void Load() override; void Unload() override; - const utf8 * GetName() override; + const utf8 * GetName() const override; private: void ReadItems(IStream * stream); diff --git a/src/object/SmallSceneryObject.cpp b/src/object/SmallSceneryObject.cpp index 3ca97e0625..d7d3ac2ecb 100644 --- a/src/object/SmallSceneryObject.cpp +++ b/src/object/SmallSceneryObject.cpp @@ -89,7 +89,7 @@ void SmallSceneryObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } -const utf8 * SmallSceneryObject::GetName() +const utf8 * SmallSceneryObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); return name != nullptr ? name : ""; diff --git a/src/object/SmallSceneryObject.h b/src/object/SmallSceneryObject.h index 5f0aa5e73f..a0bd022912 100644 --- a/src/object/SmallSceneryObject.h +++ b/src/object/SmallSceneryObject.h @@ -40,7 +40,7 @@ public: void Load() override; void Unload() override; - const utf8 * GetName() override; + const utf8 * GetName() const override; private: static uint8 * ReadVar10(IStream * stream); diff --git a/src/object/StexObject.cpp b/src/object/StexObject.cpp index bcb8906261..a7213eeec1 100644 --- a/src/object/StexObject.cpp +++ b/src/object/StexObject.cpp @@ -56,24 +56,24 @@ void StexObject::Unload() language_free_object_string(_legacyType.details); } -const utf8 * StexObject::GetName() +const utf8 * StexObject::GetName() const { return GetScenarioName(); } -const utf8 * StexObject::GetScenarioName() +const utf8 * StexObject::GetScenarioName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_SCENARIO_NAME); return name != nullptr ? name : ""; } -const utf8 * StexObject::GetScenarioDetails() +const utf8 * StexObject::GetScenarioDetails() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_SCENARIO_DETAILS); return name != nullptr ? name : ""; } -const utf8 * StexObject::GetParkName() +const utf8 * StexObject::GetParkName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_PARK_NAME); return name != nullptr ? name : ""; diff --git a/src/object/StexObject.h b/src/object/StexObject.h index 3204cc40db..a5d58032e2 100644 --- a/src/object/StexObject.h +++ b/src/object/StexObject.h @@ -37,9 +37,9 @@ public: void Load() override; void Unload() override; - const utf8 * GetName() override; + const utf8 * GetName() const override; - const utf8 * GetScenarioName(); - const utf8 * GetScenarioDetails(); - const utf8 * GetParkName(); + const utf8 * GetScenarioName() const; + const utf8 * GetScenarioDetails() const; + const utf8 * GetParkName() const; }; diff --git a/src/object/StringTable.cpp b/src/object/StringTable.cpp index b5c46e36f9..943a960e04 100644 --- a/src/object/StringTable.cpp +++ b/src/object/StringTable.cpp @@ -69,7 +69,7 @@ void StringTable::Read(IStream * stream, uint8 id) Sort(); } -const utf8 * StringTable::GetString(uint8 id) +const utf8 * StringTable::GetString(uint8 id) const { for (auto &string : _strings) { diff --git a/src/object/StringTable.h b/src/object/StringTable.h index aef6ba6d75..48ff2b1826 100644 --- a/src/object/StringTable.h +++ b/src/object/StringTable.h @@ -37,7 +37,7 @@ public: ~StringTable(); void Read(IStream * stream, uint8 id); - const utf8 * GetString(uint8 id); + const utf8 * GetString(uint8 id) const; private: void Sort(); diff --git a/src/object/WallObject.cpp b/src/object/WallObject.cpp index 5c6163fdec..e8295adb0e 100644 --- a/src/object/WallObject.cpp +++ b/src/object/WallObject.cpp @@ -71,7 +71,7 @@ void WallObject::Unload() gfx_object_free_images(_legacyType.image, GetImageTable()->GetCount()); } -const utf8 * WallObject::GetName() +const utf8 * WallObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); return name != nullptr ? name : ""; diff --git a/src/object/WallObject.h b/src/object/WallObject.h index af32bcaa38..5d685a5e97 100644 --- a/src/object/WallObject.h +++ b/src/object/WallObject.h @@ -38,5 +38,5 @@ public: void Load() override; void Unload() override; - const utf8 * GetName() override; + const utf8 * GetName() const override; }; diff --git a/src/object/WaterObject.cpp b/src/object/WaterObject.cpp index d42fa572ad..0f6b64429f 100644 --- a/src/object/WaterObject.cpp +++ b/src/object/WaterObject.cpp @@ -59,7 +59,7 @@ void WaterObject::Unload() language_free_object_string(_legacyType.string_idx); } -const utf8 * WaterObject::GetName() +const utf8 * WaterObject::GetName() const { const utf8 * name = GetStringTable()->GetString(OBJ_STRING_ID_NAME); return name != nullptr ? name : ""; diff --git a/src/object/WaterObject.h b/src/object/WaterObject.h index 147ad7f570..b288fc8b29 100644 --- a/src/object/WaterObject.h +++ b/src/object/WaterObject.h @@ -37,5 +37,5 @@ public: void Load() override; void Unload() override; - const utf8 * GetName() override; + const utf8 * GetName() const override; }; diff --git a/src/windows/editor_object_selection.c b/src/windows/editor_object_selection.c index 3f1b46236b..9b3172ee82 100644 --- a/src/windows/editor_object_selection.c +++ b/src/windows/editor_object_selection.c @@ -282,6 +282,16 @@ enum { RIDE_SORT_RIDE }; +enum { + DDIX_FILTER_RCT2, + DDIX_FILTER_WW, + DDIX_FILTER_TT, + DDIX_FILTER_CUSTOM, + DDIX_FILTER_SEPERATOR, + DDIX_FILTER_SELECTED, + DDIX_FILTER_NONSELECTED, +}; + typedef struct list_item { const ObjectRepositoryItem * repositoryItem; rct_object_entry *entry; @@ -295,6 +305,7 @@ static int _numListItems = 0; static list_item *_listItems = NULL; static int _listSortType = RIDE_SORT_TYPE; static bool _listSortDescending = false; +static void * _loadedObject = NULL; static void visible_list_dispose() { @@ -865,16 +876,7 @@ static void window_editor_object_selection_resize(rct_window *w) { window_set_resize(w, 600, 400, 1200, 1000); } -enum -{ - DDIX_FILTER_RCT2, - DDIX_FILTER_WW, - DDIX_FILTER_TT, - DDIX_FILTER_CUSTOM, - DDIX_FILTER_SEPERATOR, - DDIX_FILTER_SELECTED, - DDIX_FILTER_NONSELECTED, -}; + void window_editor_object_selection_mousedown(int widgetIndex, rct_window*w, rct_widget* widget) { int num_items; @@ -973,10 +975,12 @@ static void window_editor_object_selection_scroll_mousedown(rct_window *w, int s window_close_all_except_class(WC_EDITOR_OBJECT_SELECTION); int selected_object = get_object_from_object_selection((w->selected_tab & 0xFF), y); + if (selected_object == -1) + return; list_item * listItem = &_listItems[selected_object]; uint8 object_selection_flags = *listItem->flags; - if (selected_object == -1 || (object_selection_flags & OBJECT_SELECTION_FLAG_6)) + if (object_selection_flags & OBJECT_SELECTION_FLAG_6) return; window_invalidate(w); @@ -1031,19 +1035,27 @@ static void window_editor_object_selection_scroll_mousedown(rct_window *w, int s static void window_editor_object_selection_scroll_mouseover(rct_window *w, int scrollIndex, int x, int y) { int selectedObject = get_object_from_object_selection(w->selected_tab & 0xFF, y); - list_item * listItem = &_listItems[selectedObject]; - uint8 objectSelectionFlags = *listItem->flags; - if (objectSelectionFlags & OBJECT_SELECTION_FLAG_6) { - selectedObject = -1; + if (selectedObject != -1) { + list_item * listItem = &_listItems[selectedObject]; + uint8 objectSelectionFlags = *listItem->flags; + if (objectSelectionFlags & OBJECT_SELECTION_FLAG_6) { + selectedObject = -1; + } } - if (selectedObject != w->selected_list_item) { w->selected_list_item = selectedObject; - w->object_entry = listItem->entry; - object_free_scenario_text(); - if (selectedObject != -1) { - // Load object + if (_loadedObject != NULL) { + object_delete(_loadedObject); + _loadedObject = NULL; + } + + list_item * listItem = &_listItems[selectedObject]; + if (selectedObject == -1) { + w->object_entry = NULL; + } else { + w->object_entry = listItem->entry; + _loadedObject = object_repository_load_object(listItem->entry); } window_invalidate(w); @@ -1216,8 +1228,8 @@ static void window_editor_object_selection_paint(rct_window *w, rct_drawpixelinf rct_widget *widget; rct_object_entry *highlightedEntry; rct_string_id stringId; - uint8 *text, source; - char *datName, *name, *stringBuffer; + uint8 source; + char *stringBuffer; /*if (w->selected_tab == WINDOW_OBJECT_SELECTION_PAGE_RIDE_VEHICLES_ATTRACTIONS) { gfx_fill_rect_inset(dpi, @@ -1297,26 +1309,6 @@ static void window_editor_object_selection_paint(rct_window *w, rct_drawpixelinf rct_stex_entry* stex_entry = gStexTempChunk; - /*gfx_fill_rect_inset(dpi, - w->x + window_editor_object_selection_widgets[WIDX_FILTER_STRING_BUTTON].left, - w->y + window_editor_object_selection_widgets[WIDX_FILTER_STRING_BUTTON].top, - w->x + window_editor_object_selection_widgets[WIDX_FILTER_STRING_BUTTON].right, - w->y + window_editor_object_selection_widgets[WIDX_FILTER_STRING_BUTTON].bottom, - w->colours[1], - 0x30 - ); - - set_format_arg(0, uint32, (uint32)&_filter_string); - gfx_draw_string_left_clipped( - dpi, - 1170, - gCommonFormatArgs, - w->colours[1], - w->x + window_editor_object_selection_widgets[WIDX_FILTER_STRING_BUTTON].left + 1, - w->y + window_editor_object_selection_widgets[WIDX_FILTER_STRING_BUTTON].top, - w->x + window_editor_object_selection_widgets[WIDX_FILTER_STRING_BUTTON].right - );*/ - // Draw sort button text widget = &w->widgets[WIDX_LIST_SORT_TYPE]; if (widget->type != WWT_EMPTY) { @@ -1329,9 +1321,11 @@ static void window_editor_object_selection_paint(rct_window *w, rct_drawpixelinf gfx_draw_string_left_clipped(dpi, STR_OBJECTS_SORT_RIDE, &stringId, w->colours[1], w->x + widget->left + 1, w->y + widget->top + 1, widget->right - widget->left); } - if (w->selected_list_item == -1 || stex_entry == NULL) + if (w->selected_list_item == -1 || _loadedObject == NULL) return; + list_item *listItem = &_listItems[w->selected_list_item]; + highlightedEntry = w->object_entry; type = highlightedEntry->flags & 0x0F; @@ -1339,53 +1333,21 @@ static void window_editor_object_selection_paint(rct_window *w, rct_drawpixelinf widget = &w->widgets[WIDX_PREVIEW]; x = w->x + (widget->left + widget->right) / 2 + 1; y = w->y + (widget->top + widget->bottom) / 2 + 1; - object_paint(type, stex_entry, dpi, x, y); + // object_paint(type, stex_entry, dpi, x, y); // Draw name of object x = w->x + (widget->left + widget->right) / 2 + 1; y = w->y + widget->bottom + 3; width = w->width - w->widgets[WIDX_LIST].right - 6; - // Skip object dat name - text = (uint8*)(highlightedEntry + 1); - datName = (char*)text; - do { - text++; - } while (*(text - 1) != 0); - text += 4; - name = (char*)text; - RCT2_GLOBAL(0x009BC677, uint8) = 14; - stringId = STR_PLACEHOLDER; stringBuffer = (char*)language_get_string(STR_PLACEHOLDER) + 1; - if (gScreenFlags & (SCREEN_FLAGS_TRACK_DESIGNER | SCREEN_FLAGS_TRACK_MANAGER)) { - // Skip name - do { - text++; - } while (*(text - 1) != 0); - text += 4; - text += *text * 16 + 1; - text += *text * 16 + 1; - - if (RCT2_GLOBAL(text, uint32) & 0x1000000) { - strcpy(stringBuffer, name); - } else { - int eax = *text; - if (*text == 0xFF) { - eax = *(text + 1); - if (*(text + 1) == 0xFF) - eax = *(text + 2); - } - format_string(stringBuffer, eax + 2, NULL); - } - } else { - strcpy(stringBuffer, name); - } + strcpy(stringBuffer, listItem->repositoryItem->Name); gfx_draw_string_centred_clipped(dpi, stringId, NULL, 0, x, y, width); // Draw description of object - stringId = object_desc(type, stex_entry); + strcpy(stringBuffer, object_get_description(_loadedObject)); if (stringId != STR_NONE) { x = w->x + w->widgets[WIDX_LIST].right + 4; y += 15; @@ -1411,14 +1373,13 @@ static void window_editor_object_selection_paint(rct_window *w, rct_drawpixelinf if (w->selected_tab == WINDOW_OBJECT_SELECTION_PAGE_RIDE_VEHICLES_ATTRACTIONS) { y = w->y + w->height - 3 - 12 - 14 - 14; - rct_ride_entry *rideType = (rct_ride_entry*)stex_entry; for (int i = 0; i < 3; i++) { - if (rideType->ride_type[i] == 255) - continue; - - stringId = 2 + rideType->ride_type[i]; - gfx_draw_string_right(dpi, stringId, NULL, 2, w->x + w->width - 5, y); - y -= 11; + uint8 rideType = listItem->repositoryItem->RideType[i]; + if (rideType != 255) { + stringId = 2 + rideType; + gfx_draw_string_right(dpi, stringId, NULL, 2, w->x + w->width - 5, y); + y -= 11; + } } } @@ -1427,7 +1388,7 @@ static void window_editor_object_selection_paint(rct_window *w, rct_drawpixelinf // Draw object dat name stringId = STR_PLACEHOLDER; - strcpy(stringBuffer, datName); + strcpy(stringBuffer, path_get_filename(listItem->repositoryItem->Path)); gfx_draw_string_right(dpi, stringId, NULL, 0, w->x + w->width - 5, w->y + w->height - 3 - 12); }