mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-23 15:52:55 +01:00
Add more object source filters
This commit is contained in:
committed by
GitHub
parent
8f48da411f
commit
b4018d398c
@@ -4524,6 +4524,7 @@ STR_6214 :Skyscraper B
|
|||||||
STR_6215 :Construction
|
STR_6215 :Construction
|
||||||
STR_6216 :Operation
|
STR_6216 :Operation
|
||||||
STR_6217 :Ride / track availability
|
STR_6217 :Ride / track availability
|
||||||
|
STR_6218 :OpenRCT2 Official
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# Scenarios #
|
# Scenarios #
|
||||||
|
|||||||
@@ -40,35 +40,46 @@
|
|||||||
#include <openrct2-ui/interface/Widget.h>
|
#include <openrct2-ui/interface/Widget.h>
|
||||||
#include <openrct2-ui/windows/Window.h>
|
#include <openrct2-ui/windows/Window.h>
|
||||||
|
|
||||||
enum {
|
enum
|
||||||
FILTER_RCT2 = (1 << 0),
|
{
|
||||||
FILTER_WW = (1 << 1),
|
FILTER_RCT1 = (1 << 0),
|
||||||
FILTER_TT = (1 << 2),
|
FILTER_AA = (1 << 1),
|
||||||
FILTER_CUSTOM = (1 << 3),
|
FILTER_LL = (1 << 2),
|
||||||
|
FILTER_RCT2 = (1 << 3),
|
||||||
|
FILTER_WW = (1 << 4),
|
||||||
|
FILTER_TT = (1 << 5),
|
||||||
|
FILTER_OO = (1 << 6),
|
||||||
|
FILTER_CUSTOM = (1 << 7),
|
||||||
|
|
||||||
FILTER_RIDE_TRANSPORT = (1 << 5),
|
FILTER_RIDE_TRANSPORT = (1 << 8),
|
||||||
FILTER_RIDE_GENTLE = (1 << 6),
|
FILTER_RIDE_GENTLE = (1 << 9),
|
||||||
FILTER_RIDE_COASTER = (1 << 7),
|
FILTER_RIDE_COASTER = (1 << 10),
|
||||||
FILTER_RIDE_THRILL = (1 << 8),
|
FILTER_RIDE_THRILL = (1 << 11),
|
||||||
FILTER_RIDE_WATER = (1 << 9),
|
FILTER_RIDE_WATER = (1 << 12),
|
||||||
FILTER_RIDE_STALL = (1 << 10),
|
FILTER_RIDE_STALL = (1 << 13),
|
||||||
|
|
||||||
FILTER_SELECTED = (1 << 12),
|
FILTER_SELECTED = (1 << 14),
|
||||||
FILTER_NONSELECTED = (1 << 13),
|
FILTER_NONSELECTED = (1 << 15),
|
||||||
|
|
||||||
FILTER_RIDES = FILTER_RIDE_TRANSPORT | FILTER_RIDE_GENTLE | FILTER_RIDE_COASTER | FILTER_RIDE_THRILL | FILTER_RIDE_WATER | FILTER_RIDE_STALL,
|
FILTER_RIDES = FILTER_RIDE_TRANSPORT | FILTER_RIDE_GENTLE | FILTER_RIDE_COASTER | FILTER_RIDE_THRILL | FILTER_RIDE_WATER | FILTER_RIDE_STALL,
|
||||||
FILTER_ALL = FILTER_RIDES | FILTER_RCT2 | FILTER_WW | FILTER_TT | FILTER_CUSTOM | FILTER_SELECTED | FILTER_NONSELECTED,
|
FILTER_ALL = FILTER_RIDES | FILTER_RCT1 | FILTER_AA | FILTER_LL | FILTER_RCT2 | FILTER_WW | FILTER_TT | FILTER_OO | FILTER_CUSTOM | FILTER_SELECTED | FILTER_NONSELECTED,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static constexpr uint8 _numSourceGameItems = 8;
|
||||||
|
|
||||||
static uint32 _filter_flags;
|
static uint32 _filter_flags;
|
||||||
static uint16 _filter_object_counts[11];
|
static uint16 _filter_object_counts[11];
|
||||||
|
|
||||||
static char _filter_string[MAX_PATH];
|
static char _filter_string[MAX_PATH];
|
||||||
|
|
||||||
#define _FILTER_ALL ((_filter_flags & FILTER_ALL) == FILTER_ALL)
|
#define _FILTER_ALL ((_filter_flags & FILTER_ALL) == FILTER_ALL)
|
||||||
|
#define _FILTER_RCT1 (_filter_flags & FILTER_RCT1)
|
||||||
|
#define _FILTER_AA (_filter_flags & FILTER_AA)
|
||||||
|
#define _FILTER_LL (_filter_flags & FILTER_LL)
|
||||||
#define _FILTER_RCT2 (_filter_flags & FILTER_RCT2)
|
#define _FILTER_RCT2 (_filter_flags & FILTER_RCT2)
|
||||||
#define _FILTER_WW (_filter_flags & FILTER_WW)
|
#define _FILTER_WW (_filter_flags & FILTER_WW)
|
||||||
#define _FILTER_TT (_filter_flags & FILTER_TT)
|
#define _FILTER_TT (_filter_flags & FILTER_TT)
|
||||||
|
#define _FILTER_OO (_filter_flags & FILTER_OO)
|
||||||
#define _FILTER_CUSTOM (_filter_flags & FILTER_CUSTOM)
|
#define _FILTER_CUSTOM (_filter_flags & FILTER_CUSTOM)
|
||||||
#define _FILTER_SELECTED (_filter_flags & FILTER_SELECTED)
|
#define _FILTER_SELECTED (_filter_flags & FILTER_SELECTED)
|
||||||
#define _FILTER_NONSELECTED (_filter_flags & FILTER_NONSELECTED)
|
#define _FILTER_NONSELECTED (_filter_flags & FILTER_NONSELECTED)
|
||||||
@@ -251,9 +262,13 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
DDIX_FILTER_RCT1,
|
||||||
|
DDIX_FILTER_AA,
|
||||||
|
DDIX_FILTER_LL,
|
||||||
DDIX_FILTER_RCT2,
|
DDIX_FILTER_RCT2,
|
||||||
DDIX_FILTER_WW,
|
DDIX_FILTER_WW,
|
||||||
DDIX_FILTER_TT,
|
DDIX_FILTER_TT,
|
||||||
|
DDIX_FILTER_OO,
|
||||||
DDIX_FILTER_CUSTOM,
|
DDIX_FILTER_CUSTOM,
|
||||||
DDIX_FILTER_SEPARATOR,
|
DDIX_FILTER_SEPARATOR,
|
||||||
DDIX_FILTER_SELECTED,
|
DDIX_FILTER_SELECTED,
|
||||||
@@ -505,7 +520,7 @@ static void window_editor_object_selection_mouseup(rct_window *w, rct_widgetinde
|
|||||||
case WIDX_FILTER_RIDE_TAB_WATER:
|
case WIDX_FILTER_RIDE_TAB_WATER:
|
||||||
case WIDX_FILTER_RIDE_TAB_STALL:
|
case WIDX_FILTER_RIDE_TAB_STALL:
|
||||||
_filter_flags &= ~FILTER_RIDES;
|
_filter_flags &= ~FILTER_RIDES;
|
||||||
_filter_flags |= (1 << (widgetIndex - WIDX_FILTER_RIDE_TAB_TRANSPORT + 5));
|
_filter_flags |= (1 << (widgetIndex - WIDX_FILTER_RIDE_TAB_TRANSPORT + _numSourceGameItems));
|
||||||
gConfigInterface.object_selection_filter_flags = _filter_flags;
|
gConfigInterface.object_selection_filter_flags = _filter_flags;
|
||||||
config_save_default();
|
config_save_default();
|
||||||
|
|
||||||
@@ -575,23 +590,33 @@ static void window_editor_object_selection_resize(rct_window *w)
|
|||||||
|
|
||||||
void window_editor_object_selection_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct_widget* widget)
|
void window_editor_object_selection_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct_widget* widget)
|
||||||
{
|
{
|
||||||
sint32 num_items;
|
sint32 numSelectionItems = 0;
|
||||||
|
|
||||||
switch (widgetIndex) {
|
switch (widgetIndex) {
|
||||||
case WIDX_FILTER_DROPDOWN:
|
case WIDX_FILTER_DROPDOWN:
|
||||||
|
|
||||||
num_items = 4;
|
gDropdownItemsFormat[DDIX_FILTER_RCT1] = STR_TOGGLE_OPTION;
|
||||||
|
gDropdownItemsFormat[DDIX_FILTER_AA] = STR_TOGGLE_OPTION;
|
||||||
|
gDropdownItemsFormat[DDIX_FILTER_LL] = STR_TOGGLE_OPTION;
|
||||||
gDropdownItemsFormat[DDIX_FILTER_RCT2] = STR_TOGGLE_OPTION;
|
gDropdownItemsFormat[DDIX_FILTER_RCT2] = STR_TOGGLE_OPTION;
|
||||||
gDropdownItemsFormat[DDIX_FILTER_WW] = STR_TOGGLE_OPTION;
|
gDropdownItemsFormat[DDIX_FILTER_WW] = STR_TOGGLE_OPTION;
|
||||||
gDropdownItemsFormat[DDIX_FILTER_TT] = STR_TOGGLE_OPTION;
|
gDropdownItemsFormat[DDIX_FILTER_TT] = STR_TOGGLE_OPTION;
|
||||||
|
gDropdownItemsFormat[DDIX_FILTER_OO] = STR_TOGGLE_OPTION;
|
||||||
gDropdownItemsFormat[DDIX_FILTER_CUSTOM] = STR_TOGGLE_OPTION;
|
gDropdownItemsFormat[DDIX_FILTER_CUSTOM] = STR_TOGGLE_OPTION;
|
||||||
|
|
||||||
|
gDropdownItemsArgs[DDIX_FILTER_RCT1] = STR_SCENARIO_CATEGORY_RCT1;
|
||||||
|
gDropdownItemsArgs[DDIX_FILTER_AA] = STR_SCENARIO_CATEGORY_RCT1_AA;
|
||||||
|
gDropdownItemsArgs[DDIX_FILTER_LL] = STR_SCENARIO_CATEGORY_RCT1_LL;
|
||||||
gDropdownItemsArgs[DDIX_FILTER_RCT2] = STR_ROLLERCOASTER_TYCOON_2_DROPDOWN;
|
gDropdownItemsArgs[DDIX_FILTER_RCT2] = STR_ROLLERCOASTER_TYCOON_2_DROPDOWN;
|
||||||
gDropdownItemsArgs[DDIX_FILTER_WW] = STR_OBJECT_FILTER_WW;
|
gDropdownItemsArgs[DDIX_FILTER_WW] = STR_OBJECT_FILTER_WW;
|
||||||
gDropdownItemsArgs[DDIX_FILTER_TT] = STR_OBJECT_FILTER_TT;
|
gDropdownItemsArgs[DDIX_FILTER_TT] = STR_OBJECT_FILTER_TT;
|
||||||
|
gDropdownItemsArgs[DDIX_FILTER_OO] = STR_OBJECT_FILTER_OPENRCT2_OFFICIAL;
|
||||||
gDropdownItemsArgs[DDIX_FILTER_CUSTOM] = STR_OBJECT_FILTER_CUSTOM;
|
gDropdownItemsArgs[DDIX_FILTER_CUSTOM] = STR_OBJECT_FILTER_CUSTOM;
|
||||||
|
|
||||||
// Track manager cannot select multiple, so only show selection filters if not in track manager
|
// Track manager cannot select multiple, so only show selection filters if not in track manager
|
||||||
if (!(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER)) {
|
if (!(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER))
|
||||||
num_items = 7;
|
{
|
||||||
|
numSelectionItems = 3;
|
||||||
gDropdownItemsFormat[DDIX_FILTER_SEPARATOR] = 0;
|
gDropdownItemsFormat[DDIX_FILTER_SEPARATOR] = 0;
|
||||||
gDropdownItemsFormat[DDIX_FILTER_SELECTED] = STR_TOGGLE_OPTION;
|
gDropdownItemsFormat[DDIX_FILTER_SELECTED] = STR_TOGGLE_OPTION;
|
||||||
gDropdownItemsFormat[DDIX_FILTER_NONSELECTED] = STR_TOGGLE_OPTION;
|
gDropdownItemsFormat[DDIX_FILTER_NONSELECTED] = STR_TOGGLE_OPTION;
|
||||||
@@ -606,10 +631,10 @@ void window_editor_object_selection_mousedown(rct_window *w, rct_widgetindex wid
|
|||||||
widget->bottom - widget->top + 1,
|
widget->bottom - widget->top + 1,
|
||||||
w->colours[widget->colour],
|
w->colours[widget->colour],
|
||||||
DROPDOWN_FLAG_STAY_OPEN,
|
DROPDOWN_FLAG_STAY_OPEN,
|
||||||
num_items
|
_numSourceGameItems + numSelectionItems
|
||||||
);
|
);
|
||||||
|
|
||||||
for (sint32 i = 0; i < 4; i++)
|
for (sint32 i = 0; i < _numSourceGameItems; i++)
|
||||||
{
|
{
|
||||||
if (_filter_flags & (1 << i))
|
if (_filter_flags & (1 << i))
|
||||||
{
|
{
|
||||||
@@ -922,7 +947,6 @@ static void window_editor_object_selection_paint(rct_window *w, rct_drawpixelinf
|
|||||||
rct_widget *widget;
|
rct_widget *widget;
|
||||||
rct_object_entry *highlightedEntry;
|
rct_object_entry *highlightedEntry;
|
||||||
rct_string_id stringId;
|
rct_string_id stringId;
|
||||||
uint8 source;
|
|
||||||
|
|
||||||
/*if (w->selected_tab == WINDOW_OBJECT_SELECTION_PAGE_RIDE_VEHICLES_ATTRACTIONS) {
|
/*if (w->selected_tab == WINDOW_OBJECT_SELECTION_PAGE_RIDE_VEHICLES_ATTRACTIONS) {
|
||||||
gfx_fill_rect_inset(dpi,
|
gfx_fill_rect_inset(dpi,
|
||||||
@@ -1058,13 +1082,7 @@ static void window_editor_object_selection_paint(rct_window *w, rct_drawpixelinf
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Draw object source
|
// Draw object source
|
||||||
source = (highlightedEntry->flags & 0xF0) >> 4;
|
stringId = object_manager_get_source_game_string(highlightedEntry);
|
||||||
switch (source) {
|
|
||||||
case 8: stringId = STR_ROLLERCOASTER_TYCOON_2_DROPDOWN; break;
|
|
||||||
case 1: stringId = STR_OBJECT_FILTER_WW; break;
|
|
||||||
case 2: stringId = STR_OBJECT_FILTER_TT; break;
|
|
||||||
default: stringId = STR_OBJECT_FILTER_CUSTOM; break;
|
|
||||||
}
|
|
||||||
gfx_draw_string_right(dpi, stringId, nullptr, COLOUR_WHITE, w->x + w->width - 5, w->y + w->height - 3 - 12 - 14);
|
gfx_draw_string_right(dpi, stringId, nullptr, COLOUR_WHITE, w->x + w->width - 5, w->y + w->height - 3 - 12 - 14);
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -1369,10 +1387,21 @@ static bool filter_source(const ObjectRepositoryItem * item)
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
uint8 source = object_entry_get_source_game(&item->ObjectEntry);
|
uint8 source = object_entry_get_source_game(&item->ObjectEntry);
|
||||||
return (_FILTER_RCT2 && source == OBJECT_SOURCE_RCT2) ||
|
return (_FILTER_RCT1 && source == OBJECT_SOURCE_RCT1) ||
|
||||||
|
(_FILTER_AA && source == OBJECT_SOURCE_ADDED_ATTRACTIONS) ||
|
||||||
|
(_FILTER_LL && source == OBJECT_SOURCE_LOOPY_LANDSCAPES) ||
|
||||||
|
(_FILTER_RCT2 && source == OBJECT_SOURCE_RCT2) ||
|
||||||
(_FILTER_WW && source == OBJECT_SOURCE_WACKY_WORLDS) ||
|
(_FILTER_WW && source == OBJECT_SOURCE_WACKY_WORLDS) ||
|
||||||
(_FILTER_TT && source == OBJECT_SOURCE_TIME_TWISTER) ||
|
(_FILTER_TT && source == OBJECT_SOURCE_TIME_TWISTER) ||
|
||||||
(_FILTER_CUSTOM && source != OBJECT_SOURCE_RCT2 && source != OBJECT_SOURCE_WACKY_WORLDS && source != OBJECT_SOURCE_TIME_TWISTER);
|
(_FILTER_OO && source == OBJECT_SOURCE_OPENRCT2_OFFICIAL) ||
|
||||||
|
(_FILTER_CUSTOM &&
|
||||||
|
source != OBJECT_SOURCE_RCT1 &&
|
||||||
|
source != OBJECT_SOURCE_ADDED_ATTRACTIONS &&
|
||||||
|
source != OBJECT_SOURCE_LOOPY_LANDSCAPES &&
|
||||||
|
source != OBJECT_SOURCE_RCT2 &&
|
||||||
|
source != OBJECT_SOURCE_WACKY_WORLDS &&
|
||||||
|
source != OBJECT_SOURCE_TIME_TWISTER &&
|
||||||
|
source != OBJECT_SOURCE_OPENRCT2_OFFICIAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool filter_chunks(const ObjectRepositoryItem * item)
|
static bool filter_chunks(const ObjectRepositoryItem * item)
|
||||||
@@ -1389,7 +1418,7 @@ static bool filter_chunks(const ObjectRepositoryItem * item)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_filter_flags & (1 << (gRideCategories[rideType] + 5)))
|
if (_filter_flags & (1 << (gRideCategories[rideType] + _numSourceGameItems)))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -296,7 +296,7 @@ namespace Config
|
|||||||
model->console_small_font = reader->GetBoolean("console_small_font", false);
|
model->console_small_font = reader->GetBoolean("console_small_font", false);
|
||||||
model->current_theme_preset = reader->GetCString("current_theme", "*RCT2");
|
model->current_theme_preset = reader->GetCString("current_theme", "*RCT2");
|
||||||
model->current_title_sequence_preset = reader->GetCString("current_title_sequence", "*OPENRCT2");
|
model->current_title_sequence_preset = reader->GetCString("current_title_sequence", "*OPENRCT2");
|
||||||
model->object_selection_filter_flags = reader->GetSint32("object_selection_filter_flags", 0x7EF);
|
model->object_selection_filter_flags = reader->GetSint32("object_selection_filter_flags", 0x3FFF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3874,6 +3874,8 @@ enum {
|
|||||||
STR_CHEAT_GROUP_OPERATION = 6216,
|
STR_CHEAT_GROUP_OPERATION = 6216,
|
||||||
STR_CHEAT_GROUP_AVAILABILITY = 6217,
|
STR_CHEAT_GROUP_AVAILABILITY = 6217,
|
||||||
|
|
||||||
|
STR_OBJECT_FILTER_OPENRCT2_OFFICIAL = 6218,
|
||||||
|
|
||||||
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
||||||
STR_COUNT = 32768
|
STR_COUNT = 32768
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -50,7 +50,10 @@ void BannerObject::ReadLegacy(IReadObjectContext * context, IStream * stream)
|
|||||||
const rct_object_entry * objectEntry = object_list_find_by_name(identifier.c_str());
|
const rct_object_entry * objectEntry = object_list_find_by_name(identifier.c_str());
|
||||||
static const rct_object_entry scgPathX = Object::GetScgPathXHeader();
|
static const rct_object_entry scgPathX = Object::GetScgPathXHeader();
|
||||||
|
|
||||||
if (objectEntry != nullptr && object_entry_get_source_game(objectEntry) != OBJECT_SOURCE_RCT2)
|
if (objectEntry != nullptr &&
|
||||||
|
(object_entry_get_source_game(objectEntry) == OBJECT_SOURCE_WACKY_WORLDS ||
|
||||||
|
object_entry_get_source_game(objectEntry) == OBJECT_SOURCE_TIME_TWISTER ||
|
||||||
|
object_entry_get_source_game(objectEntry) == OBJECT_SOURCE_CUSTOM))
|
||||||
{
|
{
|
||||||
SetPrimarySceneryGroup(&scgPathX);
|
SetPrimarySceneryGroup(&scgPathX);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
#include "../core/Memory.hpp"
|
#include "../core/Memory.hpp"
|
||||||
#include "../core/String.hpp"
|
#include "../core/String.hpp"
|
||||||
#include "../localisation/Language.h"
|
#include "../localisation/Language.h"
|
||||||
@@ -21,7 +22,6 @@
|
|||||||
#include "Object.h"
|
#include "Object.h"
|
||||||
#include "ObjectLimits.h"
|
#include "ObjectLimits.h"
|
||||||
|
|
||||||
|
|
||||||
Object::Object(const rct_object_entry &entry)
|
Object::Object(const rct_object_entry &entry)
|
||||||
{
|
{
|
||||||
_objectEntry = entry;
|
_objectEntry = entry;
|
||||||
@@ -29,6 +29,23 @@ Object::Object(const rct_object_entry &entry)
|
|||||||
char name[DAT_NAME_LENGTH + 1] = { 0 };
|
char name[DAT_NAME_LENGTH + 1] = { 0 };
|
||||||
Memory::Copy(name, entry.name, DAT_NAME_LENGTH);
|
Memory::Copy(name, entry.name, DAT_NAME_LENGTH);
|
||||||
_identifier = String::Duplicate(name);
|
_identifier = String::Duplicate(name);
|
||||||
|
|
||||||
|
if (IsRCT1Object())
|
||||||
|
{
|
||||||
|
SetSourceGame(OBJECT_SOURCE_RCT1);
|
||||||
|
}
|
||||||
|
else if (IsAAObject())
|
||||||
|
{
|
||||||
|
SetSourceGame(OBJECT_SOURCE_ADDED_ATTRACTIONS);
|
||||||
|
}
|
||||||
|
else if (IsLLObject())
|
||||||
|
{
|
||||||
|
SetSourceGame(OBJECT_SOURCE_LOOPY_LANDSCAPES);
|
||||||
|
}
|
||||||
|
else if (IsOpenRCT2OfficialObject())
|
||||||
|
{
|
||||||
|
SetSourceGame(OBJECT_SOURCE_OPENRCT2_OFFICIAL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Object::~Object()
|
Object::~Object()
|
||||||
@@ -78,6 +95,611 @@ rct_object_entry Object::CreateHeader(const char name[DAT_NAME_LENGTH + 1], uint
|
|||||||
return header;
|
return header;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Object::SetSourceGame(const uint8 sourceGame)
|
||||||
|
{
|
||||||
|
_objectEntry.flags &= 0x0F;
|
||||||
|
_objectEntry.flags |= (sourceGame << 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Object::IsRCT1Object()
|
||||||
|
{
|
||||||
|
static const char _rct1Objects[][9] =
|
||||||
|
{
|
||||||
|
"CLIFT1 ",
|
||||||
|
"MONO1 ",
|
||||||
|
"MONO2 ",
|
||||||
|
"NRL ",
|
||||||
|
"CTCAR ",
|
||||||
|
"DODG1 ",
|
||||||
|
"FWH1 ",
|
||||||
|
"HHBUILD ",
|
||||||
|
"HMAZE ",
|
||||||
|
"HSKELT ",
|
||||||
|
"MGR1 ",
|
||||||
|
"OBS1 ",
|
||||||
|
"RCR ",
|
||||||
|
"SPCAR ",
|
||||||
|
"SRINGS ",
|
||||||
|
"TRUCK1 ",
|
||||||
|
"AMT1 ",
|
||||||
|
"ARRSW1 ",
|
||||||
|
"ARRSW2 ",
|
||||||
|
"BMVD ",
|
||||||
|
"BOB1 ",
|
||||||
|
"PTCT1 ",
|
||||||
|
"RCKC ",
|
||||||
|
"REVF1 ",
|
||||||
|
"SKYTR ",
|
||||||
|
"STEEP1 ",
|
||||||
|
"STEEP2 ",
|
||||||
|
"TOGST ",
|
||||||
|
"WMMINE ",
|
||||||
|
"WMOUSE ",
|
||||||
|
"ZLDB ",
|
||||||
|
"ZLOG ",
|
||||||
|
"C3D ",
|
||||||
|
"KART1 ",
|
||||||
|
"SIMPOD ",
|
||||||
|
"SSC1 ",
|
||||||
|
"SWSH1 ",
|
||||||
|
"SWSH2 ",
|
||||||
|
"TOPSP1 ",
|
||||||
|
"TWIST1 ",
|
||||||
|
"BBOAT ",
|
||||||
|
"CBOAT ",
|
||||||
|
"DING1 ",
|
||||||
|
"LFB1 ",
|
||||||
|
"RAPBOAT ",
|
||||||
|
"RBOAT ",
|
||||||
|
"SWANS ",
|
||||||
|
"TRIKE ",
|
||||||
|
"BALLN ",
|
||||||
|
"BURGB ",
|
||||||
|
"CHPSH ",
|
||||||
|
"CNDYF ",
|
||||||
|
"DRNKS ",
|
||||||
|
"ICECR1 ",
|
||||||
|
"ICETST ",
|
||||||
|
"INFOK ",
|
||||||
|
"PIZZS ",
|
||||||
|
"POPCS ",
|
||||||
|
"SOUVS ",
|
||||||
|
"TLT1 ",
|
||||||
|
|
||||||
|
// Small scenery
|
||||||
|
"ALLSORT1",
|
||||||
|
"ALLSORT2",
|
||||||
|
"TAC ",
|
||||||
|
"TAL ",
|
||||||
|
"TAP ",
|
||||||
|
"TAS ",
|
||||||
|
"TAS1 ",
|
||||||
|
"TAS2 ",
|
||||||
|
"TAS3 ",
|
||||||
|
"TAS4 ",
|
||||||
|
"TB1 ",
|
||||||
|
"TB2 ",
|
||||||
|
"TBC ",
|
||||||
|
"TBP ",
|
||||||
|
"TBR ",
|
||||||
|
"TBR1 ",
|
||||||
|
"TBR2 ",
|
||||||
|
"TBR3 ",
|
||||||
|
"TBR4 ",
|
||||||
|
"TBW ",
|
||||||
|
"TCB ",
|
||||||
|
"TCC ",
|
||||||
|
"TCE ",
|
||||||
|
"TCF ",
|
||||||
|
"TCJ ",
|
||||||
|
"TCL ",
|
||||||
|
"TCO ",
|
||||||
|
"TCRP ",
|
||||||
|
"TCT ",
|
||||||
|
"TCT1 ",
|
||||||
|
"TCT2 ",
|
||||||
|
"TCY ",
|
||||||
|
"TDM ",
|
||||||
|
"TEL ",
|
||||||
|
"TEN ",
|
||||||
|
"TEP ",
|
||||||
|
"TERB ",
|
||||||
|
"TERS ",
|
||||||
|
"TES1 ",
|
||||||
|
"TF1 ",
|
||||||
|
"TF2 ",
|
||||||
|
"TGHC ",
|
||||||
|
"TGHC2 ",
|
||||||
|
"TGS ",
|
||||||
|
"TH1 ",
|
||||||
|
"TH2 ",
|
||||||
|
"THL ",
|
||||||
|
"THRS ",
|
||||||
|
"THT ",
|
||||||
|
"TIC ",
|
||||||
|
"TITC ",
|
||||||
|
"TK1 ",
|
||||||
|
"TK2 ",
|
||||||
|
"TK3 ",
|
||||||
|
"TK4 ",
|
||||||
|
"TL0 ",
|
||||||
|
"TL1 ",
|
||||||
|
"TL2 ",
|
||||||
|
"TL3 ",
|
||||||
|
"TLC ",
|
||||||
|
"TLP ",
|
||||||
|
"TLY ",
|
||||||
|
"TM0 ",
|
||||||
|
"TM1 ",
|
||||||
|
"TM2 ",
|
||||||
|
"TM3 ",
|
||||||
|
"TMBJ ",
|
||||||
|
"TMC ",
|
||||||
|
"TMG ",
|
||||||
|
"TMJ ",
|
||||||
|
"TML ",
|
||||||
|
"TMO1 ",
|
||||||
|
"TMO2 ",
|
||||||
|
"TMO3 ",
|
||||||
|
"TMO4 ",
|
||||||
|
"TMO5 ",
|
||||||
|
"TMP ",
|
||||||
|
"TMS1 ",
|
||||||
|
"TMW ",
|
||||||
|
"TMZP ",
|
||||||
|
"TNS ",
|
||||||
|
"TP1 ",
|
||||||
|
"TP2 ",
|
||||||
|
"TPM ",
|
||||||
|
"TQ1 ",
|
||||||
|
"TQ2 ",
|
||||||
|
"TR1 ",
|
||||||
|
"TR2 ",
|
||||||
|
"TRC ",
|
||||||
|
"TRF ",
|
||||||
|
"TRF2 ",
|
||||||
|
"TRMS ",
|
||||||
|
"TRWS ",
|
||||||
|
"TS0 ",
|
||||||
|
"TS1 ",
|
||||||
|
"TS2 ",
|
||||||
|
"TS3 ",
|
||||||
|
"TS4 ",
|
||||||
|
"TS5 ",
|
||||||
|
"TS6 ",
|
||||||
|
"TSB ",
|
||||||
|
"TSC ",
|
||||||
|
"TSD ",
|
||||||
|
"TSH ",
|
||||||
|
"TSH0 ",
|
||||||
|
"TSH1 ",
|
||||||
|
"TSH2 ",
|
||||||
|
"TSH3 ",
|
||||||
|
"TSH4 ",
|
||||||
|
"TSH5 ",
|
||||||
|
"TSP ",
|
||||||
|
"TSQ ",
|
||||||
|
"TST1 ",
|
||||||
|
"TST2 ",
|
||||||
|
"TST3 ",
|
||||||
|
"TST4 ",
|
||||||
|
"TST5 ",
|
||||||
|
"TSTD ",
|
||||||
|
"TT1 ",
|
||||||
|
"TUS ",
|
||||||
|
"TVL ",
|
||||||
|
"TWH1 ",
|
||||||
|
"TWH2 ",
|
||||||
|
"TWN ",
|
||||||
|
"TWP ",
|
||||||
|
"TWW ",
|
||||||
|
"TDF ",
|
||||||
|
"TEF ",
|
||||||
|
"TQF ",
|
||||||
|
"TTF ",
|
||||||
|
"TWF ",
|
||||||
|
"TCK ",
|
||||||
|
"TG1 ",
|
||||||
|
"TG10 ",
|
||||||
|
"TG11 ",
|
||||||
|
"TG12 ",
|
||||||
|
"TG13 ",
|
||||||
|
"TG14 ",
|
||||||
|
"TG15 ",
|
||||||
|
"TG16 ",
|
||||||
|
"TG17 ",
|
||||||
|
"TG18 ",
|
||||||
|
"TG19 ",
|
||||||
|
"TG2 ",
|
||||||
|
"TG20 ",
|
||||||
|
"TG21 ",
|
||||||
|
"TG3 ",
|
||||||
|
"TG4 ",
|
||||||
|
"TG5 ",
|
||||||
|
"TG6 ",
|
||||||
|
"TG7 ",
|
||||||
|
"TG8 ",
|
||||||
|
"TG9 ",
|
||||||
|
|
||||||
|
// Large Scenery
|
||||||
|
"SCLN ",
|
||||||
|
"SHS1 ",
|
||||||
|
"SHS2 ",
|
||||||
|
"SMH1 ",
|
||||||
|
"SMH2 ",
|
||||||
|
"SMN1 ",
|
||||||
|
"SCOL ",
|
||||||
|
"SMB ",
|
||||||
|
"SPYR ",
|
||||||
|
"SSPX ",
|
||||||
|
|
||||||
|
// Walls
|
||||||
|
"WC3 ",
|
||||||
|
"WBR1 ",
|
||||||
|
"WBR2 ",
|
||||||
|
"WBR3 ",
|
||||||
|
"WBRG ",
|
||||||
|
"WCH ",
|
||||||
|
"WCHG ",
|
||||||
|
"WCW1 ",
|
||||||
|
"WCW2 ",
|
||||||
|
"WEW ",
|
||||||
|
"WFW1 ",
|
||||||
|
"WFWG ",
|
||||||
|
"WHG ",
|
||||||
|
"WHGG ",
|
||||||
|
"WMF ",
|
||||||
|
"WMFG ",
|
||||||
|
"WMW ",
|
||||||
|
"WMWW ",
|
||||||
|
"WPF ",
|
||||||
|
"WPFG ",
|
||||||
|
"WRW ",
|
||||||
|
"WSW ",
|
||||||
|
"WSW1 ",
|
||||||
|
"WSW2 ",
|
||||||
|
"WSWG ",
|
||||||
|
|
||||||
|
// Paths
|
||||||
|
"PATHCRZY",
|
||||||
|
"PATHDIRT",
|
||||||
|
"ROAD ",
|
||||||
|
"TARMAC ",
|
||||||
|
|
||||||
|
// Path additions
|
||||||
|
"LAMP1 ",
|
||||||
|
"LAMP2 ",
|
||||||
|
"LAMP3 ",
|
||||||
|
"LAMP4 ",
|
||||||
|
"LITTER1 ",
|
||||||
|
"BENCH1 ",
|
||||||
|
"BENCHSTN",
|
||||||
|
"JUMPFNT1",
|
||||||
|
|
||||||
|
// Scenery groups
|
||||||
|
"SCGFENCE",
|
||||||
|
"SCGGARDN",
|
||||||
|
"SCGPATHX",
|
||||||
|
"SCGSHRUB",
|
||||||
|
"SCGTREES",
|
||||||
|
|
||||||
|
"SCGCLASS",
|
||||||
|
"SCGEGYPT",
|
||||||
|
"SCGMART ",
|
||||||
|
"SCGMINE ",
|
||||||
|
"SCGWOND ",
|
||||||
|
|
||||||
|
// Park entrance
|
||||||
|
"PKENT1 ",
|
||||||
|
|
||||||
|
// Water
|
||||||
|
"WTRCYAN ",
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const auto entry : _rct1Objects)
|
||||||
|
{
|
||||||
|
if (String::Equals(_identifier, entry))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Object::IsAAObject()
|
||||||
|
{
|
||||||
|
static const char _aaObjects[][9] =
|
||||||
|
{
|
||||||
|
// Rides / vehicles / stalls
|
||||||
|
"BMFL ",
|
||||||
|
"BMRB ",
|
||||||
|
"BMSD ",
|
||||||
|
"BMSU ",
|
||||||
|
"CHBUILD ",
|
||||||
|
"CIRCUS1 ",
|
||||||
|
"CLIFT2 ",
|
||||||
|
"FSAUC ",
|
||||||
|
"GDROP1 ",
|
||||||
|
"GOLF1 ",
|
||||||
|
"GTC ",
|
||||||
|
"HATST ",
|
||||||
|
"HELICAR ",
|
||||||
|
"HOTDS ",
|
||||||
|
"MFT ",
|
||||||
|
"MONBK ",
|
||||||
|
"NRL2 ",
|
||||||
|
"REVCAR ",
|
||||||
|
"SFRIC1 ",
|
||||||
|
"SMC1 ",
|
||||||
|
"SMONO ",
|
||||||
|
"SPBOAT ",
|
||||||
|
"SQDST ",
|
||||||
|
"TOFFS ",
|
||||||
|
"UTCAR ",
|
||||||
|
"UTCARR ",
|
||||||
|
"VCR ",
|
||||||
|
"VEKST ",
|
||||||
|
"VREEL ",
|
||||||
|
|
||||||
|
// Small scenery
|
||||||
|
"TBN ",
|
||||||
|
"TBN1 ",
|
||||||
|
"TDN4 ",
|
||||||
|
"TDN5 ",
|
||||||
|
"TDT1 ",
|
||||||
|
"TDT2 ",
|
||||||
|
"TDT3 ",
|
||||||
|
"TGC1 ",
|
||||||
|
"TGC2 ",
|
||||||
|
"TGE1 ",
|
||||||
|
"TGE2 ",
|
||||||
|
"TGE3 ",
|
||||||
|
"TGE4 ",
|
||||||
|
"TGE5 ",
|
||||||
|
"TGS1 ",
|
||||||
|
"TGS2 ",
|
||||||
|
"TGS3 ",
|
||||||
|
"TGS4 ",
|
||||||
|
"TJB1 ",
|
||||||
|
"TJB2 ",
|
||||||
|
"TJB3 ",
|
||||||
|
"TJB4 ",
|
||||||
|
"TJF ",
|
||||||
|
"TJP1 ",
|
||||||
|
"TJP2 ",
|
||||||
|
"TJT1 ",
|
||||||
|
"TJT2 ",
|
||||||
|
"TJT3 ",
|
||||||
|
"TJT4 ",
|
||||||
|
"TJT5 ",
|
||||||
|
"TJT6 ",
|
||||||
|
"TMM1 ",
|
||||||
|
"TMM2 ",
|
||||||
|
"TMM3 ",
|
||||||
|
|
||||||
|
// Large scenery
|
||||||
|
"SDN1 ",
|
||||||
|
"SDN2 ",
|
||||||
|
"SDN3 ",
|
||||||
|
"SSK1 ",
|
||||||
|
|
||||||
|
// Walls
|
||||||
|
"WALLGL16",
|
||||||
|
"WBW ",
|
||||||
|
"WGW2 ",
|
||||||
|
"WJF ",
|
||||||
|
"WPW1 ",
|
||||||
|
"WPW2 ",
|
||||||
|
"WWTW ",
|
||||||
|
|
||||||
|
// Banners
|
||||||
|
"BN1 ",
|
||||||
|
"BN2 ",
|
||||||
|
"BN3 ",
|
||||||
|
"BN4 ",
|
||||||
|
"BN5 ",
|
||||||
|
"BN6 ",
|
||||||
|
|
||||||
|
// Paths
|
||||||
|
"PATHASH ",
|
||||||
|
"PATHSPCE",
|
||||||
|
"TARMACB ",
|
||||||
|
"TARMACG ",
|
||||||
|
|
||||||
|
// Scenery groups
|
||||||
|
"SCGABSTR",
|
||||||
|
"SCGJUNGL",
|
||||||
|
"SCGJURAS",
|
||||||
|
"SCGSPOOK",
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const auto entry : _aaObjects)
|
||||||
|
{
|
||||||
|
if (String::Equals(_identifier, entry))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Object::IsLLObject()
|
||||||
|
{
|
||||||
|
static const char _llObjects[][9] =
|
||||||
|
{
|
||||||
|
// Rides / vehicles / stalls
|
||||||
|
"AML1 ",
|
||||||
|
"ARRT2 ",
|
||||||
|
"CHCKS ",
|
||||||
|
"COFFS ",
|
||||||
|
"CSTBOAT ",
|
||||||
|
"DOUGH ",
|
||||||
|
"ENTERP ",
|
||||||
|
"IVMC1 ",
|
||||||
|
"JSKI ",
|
||||||
|
"LEMST ",
|
||||||
|
"NEMT ",
|
||||||
|
"RFTBOAT ",
|
||||||
|
"SLCFO ",
|
||||||
|
"THCAR ",
|
||||||
|
"TSHRT ",
|
||||||
|
|
||||||
|
// Small scenery
|
||||||
|
"TCD ",
|
||||||
|
"TCFS ",
|
||||||
|
"TCN ",
|
||||||
|
"TGG ",
|
||||||
|
"TGH1 ",
|
||||||
|
"TGH2 ",
|
||||||
|
"TIG ",
|
||||||
|
"TNSS ",
|
||||||
|
"TOH1 ",
|
||||||
|
"TOH2 ",
|
||||||
|
"TOH3 ",
|
||||||
|
"TOS ",
|
||||||
|
"TOT1 ",
|
||||||
|
"TOT2 ",
|
||||||
|
"TOT3 ",
|
||||||
|
"TOT4 ",
|
||||||
|
"TRF3 ",
|
||||||
|
"TRFS ",
|
||||||
|
"TSC2 ",
|
||||||
|
"TSCP ",
|
||||||
|
"TSF1 ",
|
||||||
|
"TSF2 ",
|
||||||
|
"TSF3 ",
|
||||||
|
"TSG ",
|
||||||
|
"TSK ",
|
||||||
|
"TSM ",
|
||||||
|
"TSMP ",
|
||||||
|
"TSNB ",
|
||||||
|
"TSNC ",
|
||||||
|
"TSP1 ",
|
||||||
|
"TSP2 ",
|
||||||
|
"TSPH ",
|
||||||
|
"TTG ",
|
||||||
|
|
||||||
|
// Large scenery
|
||||||
|
"SAH ",
|
||||||
|
"SAH2 ",
|
||||||
|
"SAH3 ",
|
||||||
|
"SCT ",
|
||||||
|
"SGP ",
|
||||||
|
"SIP ",
|
||||||
|
"SOB ",
|
||||||
|
"SOH1 ",
|
||||||
|
"SOH2 ",
|
||||||
|
"SOH3 ",
|
||||||
|
"SPG ",
|
||||||
|
"SPS ",
|
||||||
|
"SSH ",
|
||||||
|
"SSR ",
|
||||||
|
"SST ",
|
||||||
|
"STB1 ",
|
||||||
|
"STB2 ",
|
||||||
|
"STG1 ",
|
||||||
|
"STG2 ",
|
||||||
|
"STH ",
|
||||||
|
|
||||||
|
// Walls
|
||||||
|
"WC1 ",
|
||||||
|
"WC10 ",
|
||||||
|
"WC11 ",
|
||||||
|
"WC12 ",
|
||||||
|
"WC13 ",
|
||||||
|
"WC14 ",
|
||||||
|
"WC15 ",
|
||||||
|
"WC16 ",
|
||||||
|
"WC17 ",
|
||||||
|
"WC18 ",
|
||||||
|
"WC2 ",
|
||||||
|
"WC4 ",
|
||||||
|
"WC5 ",
|
||||||
|
"WC6 ",
|
||||||
|
"WC7 ",
|
||||||
|
"WC8 ",
|
||||||
|
"WC9 ",
|
||||||
|
"WPW3 ",
|
||||||
|
|
||||||
|
// Banners
|
||||||
|
"BN7 ",
|
||||||
|
"BN8 ",
|
||||||
|
"BN9 ",
|
||||||
|
|
||||||
|
// Path additions
|
||||||
|
"BENCHSPC",
|
||||||
|
"JUMPSNW1",
|
||||||
|
"LITTERSP",
|
||||||
|
|
||||||
|
// Scenery groups
|
||||||
|
"SCGHALLO",
|
||||||
|
"SCGMEDIE",
|
||||||
|
"SCGORIEN",
|
||||||
|
"SCGSNOW ",
|
||||||
|
"SCGSPACE",
|
||||||
|
"SCGURBAN",
|
||||||
|
|
||||||
|
// Water
|
||||||
|
"WTRORNG ",
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const auto entry : _llObjects)
|
||||||
|
{
|
||||||
|
if (String::Equals(_identifier, entry))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Object::IsOpenRCT2OfficialObject()
|
||||||
|
{
|
||||||
|
static const char _openRCT2OfficialObjects[][9] =
|
||||||
|
{
|
||||||
|
// Offical extended scenery set
|
||||||
|
"XXBBBR01",
|
||||||
|
"TTRFTL02",
|
||||||
|
"TTRFTL03",
|
||||||
|
"TTRFTL04",
|
||||||
|
"TTRFTL07",
|
||||||
|
"TTRFTL08",
|
||||||
|
"TTPIRF02",
|
||||||
|
"TTPIRF03",
|
||||||
|
"TTPIRF04",
|
||||||
|
"TTPIRF05",
|
||||||
|
"TTPIRF07",
|
||||||
|
"TTPIRF08",
|
||||||
|
"MG-PRAR ",
|
||||||
|
"TTRFWD01",
|
||||||
|
"TTRFWD02",
|
||||||
|
"TTRFWD03",
|
||||||
|
"TTRFWD04",
|
||||||
|
"TTRFWD05",
|
||||||
|
"TTRFWD06",
|
||||||
|
"TTRFWD07",
|
||||||
|
"TTRFWD08",
|
||||||
|
"TTRFGL01",
|
||||||
|
"TTRFGL02",
|
||||||
|
"TTRFGL03",
|
||||||
|
"ACWW33 ",
|
||||||
|
"ACWWF32 ",
|
||||||
|
|
||||||
|
// Official DLC
|
||||||
|
"BIGPANDA",
|
||||||
|
"LITTERPA",
|
||||||
|
"PANDAGR ",
|
||||||
|
"SCGPANDA",
|
||||||
|
"WTRPINK ",
|
||||||
|
"ZPANDA ",
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const auto entry : _openRCT2OfficialObjects)
|
||||||
|
{
|
||||||
|
if (String::Equals(_identifier, entry))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef __WARN_SUGGEST_FINAL_METHODS__
|
#ifdef __WARN_SUGGEST_FINAL_METHODS__
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
|
|||||||
@@ -62,6 +62,10 @@ typedef enum
|
|||||||
OBJECT_SOURCE_CUSTOM,
|
OBJECT_SOURCE_CUSTOM,
|
||||||
OBJECT_SOURCE_WACKY_WORLDS,
|
OBJECT_SOURCE_WACKY_WORLDS,
|
||||||
OBJECT_SOURCE_TIME_TWISTER,
|
OBJECT_SOURCE_TIME_TWISTER,
|
||||||
|
OBJECT_SOURCE_OPENRCT2_OFFICIAL,
|
||||||
|
OBJECT_SOURCE_RCT1,
|
||||||
|
OBJECT_SOURCE_ADDED_ATTRACTIONS,
|
||||||
|
OBJECT_SOURCE_LOOPY_LANDSCAPES,
|
||||||
OBJECT_SOURCE_RCT2 = 8
|
OBJECT_SOURCE_RCT2 = 8
|
||||||
} OBJECT_SOURCE_GAME;
|
} OBJECT_SOURCE_GAME;
|
||||||
|
|
||||||
@@ -166,6 +170,12 @@ protected:
|
|||||||
std::string GetOverrideString(uint8 index) const;
|
std::string GetOverrideString(uint8 index) const;
|
||||||
std::string GetString(uint8 index) const;
|
std::string GetString(uint8 index) const;
|
||||||
|
|
||||||
|
void SetSourceGame(const uint8 sourceGame);
|
||||||
|
bool IsRCT1Object();
|
||||||
|
bool IsAAObject();
|
||||||
|
bool IsLLObject();
|
||||||
|
bool IsOpenRCT2OfficialObject();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit Object(const rct_object_entry &entry);
|
explicit Object(const rct_object_entry &entry);
|
||||||
virtual ~Object();
|
virtual ~Object();
|
||||||
|
|||||||
@@ -232,15 +232,22 @@ public:
|
|||||||
|
|
||||||
static rct_string_id GetObjectSourceGameString(const rct_object_entry * entry)
|
static rct_string_id GetObjectSourceGameString(const rct_object_entry * entry)
|
||||||
{
|
{
|
||||||
uint8 source = (entry->flags & 0xF0) >> 4;
|
switch (object_entry_get_source_game(entry))
|
||||||
switch (source)
|
|
||||||
{
|
{
|
||||||
|
case OBJECT_SOURCE_RCT1:
|
||||||
|
return STR_SCENARIO_CATEGORY_RCT1;
|
||||||
|
case OBJECT_SOURCE_ADDED_ATTRACTIONS:
|
||||||
|
return STR_SCENARIO_CATEGORY_RCT1_AA;
|
||||||
|
case OBJECT_SOURCE_LOOPY_LANDSCAPES:
|
||||||
|
return STR_SCENARIO_CATEGORY_RCT1_LL;
|
||||||
case OBJECT_SOURCE_RCT2:
|
case OBJECT_SOURCE_RCT2:
|
||||||
return STR_ROLLERCOASTER_TYCOON_2_DROPDOWN;
|
return STR_ROLLERCOASTER_TYCOON_2_DROPDOWN;
|
||||||
case OBJECT_SOURCE_WACKY_WORLDS:
|
case OBJECT_SOURCE_WACKY_WORLDS:
|
||||||
return STR_OBJECT_FILTER_WW;
|
return STR_OBJECT_FILTER_WW;
|
||||||
case OBJECT_SOURCE_TIME_TWISTER:
|
case OBJECT_SOURCE_TIME_TWISTER:
|
||||||
return STR_OBJECT_FILTER_TT;
|
return STR_OBJECT_FILTER_TT;
|
||||||
|
case OBJECT_SOURCE_OPENRCT2_OFFICIAL:
|
||||||
|
return STR_OBJECT_FILTER_OPENRCT2_OFFICIAL;
|
||||||
default:
|
default:
|
||||||
return STR_OBJECT_FILTER_CUSTOM;
|
return STR_OBJECT_FILTER_CUSTOM;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ class ObjectFileIndex final : public FileIndex<ObjectRepositoryItem>
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
static constexpr uint32 MAGIC_NUMBER = 0x5844494F; // OIDX
|
static constexpr uint32 MAGIC_NUMBER = 0x5844494F; // OIDX
|
||||||
static constexpr uint16 VERSION = 16;
|
static constexpr uint16 VERSION = 17;
|
||||||
static constexpr auto PATTERN = "*.dat;*.pob";
|
static constexpr auto PATTERN = "*.dat;*.pob";
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|||||||
Reference in New Issue
Block a user