Move ride naming to RTD

This also means that all unused ride types will now have the same name. I have made an exception for the 'arbitrary ride type change' dropdown only.
This commit is contained in:
Gymnasiast 2020-06-16 22:50:58 +02:00
parent 9cf12e763d
commit 96678a14eb
No known key found for this signature in database
GPG Key ID: DBFFF47AB2CA3EDD
97 changed files with 163 additions and 144 deletions

View File

@ -3669,6 +3669,7 @@ STR_6371 :The specified path contains a RollerCoaster Tycoon 1 installation,
STR_6372 :The specified path contains a RollerCoaster Tycoon 1 installation, but this version is not suitable. OpenRCT2 needs a Loopy Landscapes or RCT Deluxe install in order to use RollerCoaster Tycoon 1 assets.
STR_6373 :Toggle clearance checks
STR_6374 :C
STR_6375 :Unknown Ride
#############
# Scenarios #

View File

@ -690,7 +690,7 @@ static void window_editor_inventions_list_scrollpaint(rct_window* w, rct_drawpix
&& !RideTypeDescriptors[researchItem.baseRideType].HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY))
{
const auto rideEntry = get_ride_entry(researchItem.entryIndex);
const rct_string_id rideGroupName = get_ride_naming(researchItem.baseRideType, rideEntry).name;
const rct_string_id rideGroupName = get_ride_naming(researchItem.baseRideType, rideEntry).Name;
format_string(
groupNamePtr, std::size(groupNameBuffer), STR_INVENTIONS_LIST_RIDE_AND_VEHICLE_NAME,
static_cast<const void*>(&rideGroupName));
@ -736,7 +736,7 @@ static void window_editor_inventions_list_drag_open(ResearchItem* researchItem)
&& !RideTypeDescriptors[researchItem->baseRideType].HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY))
{
const auto rideEntry = get_ride_entry(researchItem->entryIndex);
const rct_string_id rideGroupName = get_ride_naming(researchItem->baseRideType, rideEntry).name;
const rct_string_id rideGroupName = get_ride_naming(researchItem->baseRideType, rideEntry).Name;
rct_string_id args[] = {
rideGroupName,
stringId,
@ -834,7 +834,7 @@ static rct_string_id window_editor_inventions_list_prepare_name(const ResearchIt
{
drawString = withGap ? STR_INVENTIONS_LIST_RIDE_AND_VEHICLE_NAME_DRAG : STR_WINDOW_COLOUR_2_STRINGID_STRINGID;
rct_string_id rideGroupName = get_ride_naming(researchItem->baseRideType, get_ride_entry(researchItem->entryIndex))
.name;
.Name;
ft.Add<rct_string_id>(rideGroupName);
ft.Add<rct_string_id>(stringId);
}

View File

@ -1503,11 +1503,11 @@ static rct_string_id get_ride_type_string_id(const ObjectRepositoryItem* item)
if (RideTypeDescriptors[rideType].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
{
const RideGroup* rideGroup = RideGroupManager::RideGroupFind(rideType, item->RideInfo.RideGroupIndex);
result = rideGroup->Naming.name;
result = rideGroup->Naming.Name;
}
else
{
result = RideNaming[rideType].name;
result = RideTypeDescriptors[rideType].Naming.Name;
}
break;

View File

@ -262,7 +262,7 @@ static void window_install_track_paint(rct_window* w, rct_drawpixelinfo* dpi)
gfx_draw_string_left(dpi, STR_TRACK_DESIGN_NAME, &trackName, COLOUR_BLACK, screenPos.x - 1, screenPos.y);
screenPos.y += LIST_ROW_HEIGHT;
rct_ride_name rideName;
RideNaming rideName;
rct_string_id friendlyTrackName;
void* objectEntry = object_manager_load_object(&td6->vehicle_object);
@ -270,12 +270,12 @@ static void window_install_track_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
auto groupIndex = object_manager_get_loaded_object_entry_index(objectEntry);
rideName = get_ride_naming(td6->type, get_ride_entry(groupIndex));
friendlyTrackName = rideName.name;
friendlyTrackName = rideName.Name;
}
else
{
// Fall back on the technical track name if the vehicle object cannot be loaded
friendlyTrackName = RideNaming[td6->type].name;
friendlyTrackName = RideTypeDescriptors[td6->type].Naming.Name;
}
gfx_draw_string_left(dpi, STR_TRACK_DESIGN_TYPE, &friendlyTrackName, COLOUR_BLACK, screenPos.x, screenPos.y);

View File

@ -966,13 +966,13 @@ static void window_new_ride_paint_ride_information(
rct_window* w, rct_drawpixelinfo* dpi, RideSelection item, const ScreenCoordsXY& screenPos, int32_t width)
{
rct_ride_entry* rideEntry = get_ride_entry(item.EntryIndex);
rct_ride_name rideNaming;
RideNaming rideNaming;
// Ride name and description
rideNaming = get_ride_naming(item.Type, rideEntry);
auto ft = Formatter::Common();
ft.Add<rct_string_id>(rideNaming.name);
ft.Add<rct_string_id>(rideNaming.description);
ft.Add<rct_string_id>(rideNaming.Name);
ft.Add<rct_string_id>(rideNaming.Description);
gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, screenPos, width, STR_NEW_RIDE_NAME_AND_DESCRIPTION, COLOUR_BLACK);
char availabilityString[AVAILABILITY_STRING_SIZE];
@ -1093,7 +1093,7 @@ static void window_new_ride_list_vehicles_for(uint8_t rideType, const rct_ride_e
}
// Append vehicle name
auto vehicleName = language_get_string(currentRideEntry->naming.name);
auto vehicleName = language_get_string(currentRideEntry->naming.Name);
safe_strcat(buffer, vehicleName, bufferLen);
isFirst = false;

View File

@ -2262,6 +2262,33 @@ static void window_ride_show_open_dropdown(rct_window* w, rct_widget* widget)
gDropdownDefaultIndex = info.DefaultIndex;
}
static rct_string_id get_ride_type_name_for_dropdown(uint8_t rideType)
{
switch (rideType)
{
case RIDE_TYPE_1D:
return STR_RIDE_NAME_1D;
case RIDE_TYPE_1F:
return STR_RIDE_NAME_1F;
case RIDE_TYPE_22:
return STR_RIDE_NAME_22;
case RIDE_TYPE_50:
return STR_RIDE_NAME_50;
case RIDE_TYPE_52:
return STR_RIDE_NAME_52;
case RIDE_TYPE_53:
return STR_RIDE_NAME_53;
case RIDE_TYPE_54:
return STR_RIDE_NAME_54;
case RIDE_TYPE_55:
return STR_RIDE_NAME_55;
case RIDE_TYPE_59:
return STR_RIDE_NAME_59;
default:
return RideTypeDescriptors[rideType].Naming.Name;
}
}
static void populate_ride_type_dropdown()
{
auto& ls = OpenRCT2::GetContext()->GetLocalisationService();
@ -2272,7 +2299,8 @@ static void populate_ride_type_dropdown()
for (uint8_t i = 0; i < RIDE_TYPE_COUNT; i++)
{
RideTypeLabel label = { i, RideNaming[i].name, ls.GetString(RideNaming[i].name) };
auto name = get_ride_type_name_for_dropdown(i);
RideTypeLabel label = { i, name, ls.GetString(name) };
RideDropdownData.push_back(label);
}
@ -2375,8 +2403,8 @@ static void populate_vehicle_type_dropdown(Ride* ride)
continue;
}
VehicleTypeLabel label = { rideEntryIndex, currentRideEntry->naming.name,
ls.GetString(currentRideEntry->naming.name) };
VehicleTypeLabel label = { rideEntryIndex, currentRideEntry->naming.Name,
ls.GetString(currentRideEntry->naming.Name) };
VehicleDropdownData.push_back(label);
}
}
@ -2673,7 +2701,7 @@ static void window_ride_main_invalidate(rct_window* w)
else
{
window_ride_main_widgets[WIDX_RIDE_TYPE].type = WWT_DROPDOWN;
window_ride_main_widgets[WIDX_RIDE_TYPE].text = RideNaming[ride->type].name;
window_ride_main_widgets[WIDX_RIDE_TYPE].text = RideTypeDescriptors[ride->type].Naming.Name;
window_ride_main_widgets[WIDX_RIDE_TYPE_DROPDOWN].type = WWT_BUTTON;
}
@ -3077,7 +3105,7 @@ static void window_ride_vehicle_invalidate(rct_window* w)
carsPerTrain = ride->num_cars_per_train - rideEntry->zero_cars;
// Vehicle type
window_ride_vehicle_widgets[WIDX_VEHICLE_TYPE].text = rideEntry->naming.name;
window_ride_vehicle_widgets[WIDX_VEHICLE_TYPE].text = rideEntry->naming.Name;
// Trains
if (rideEntry->cars_per_flat_ride > 1 || gCheatsDisableTrainLengthLimit)
@ -3169,7 +3197,7 @@ static void window_ride_vehicle_paint(rct_window* w, rct_drawpixelinfo* dpi)
int32_t y = w->windowPos.y + 64;
// Description
y += gfx_draw_string_left_wrapped(dpi, &rideEntry->naming.description, x, y, 300, STR_BLACK_STRING, COLOUR_BLACK);
y += gfx_draw_string_left_wrapped(dpi, &rideEntry->naming.Description, x, y, 300, STR_BLACK_STRING, COLOUR_BLACK);
y += 2;
// Capacity

View File

@ -1908,7 +1908,7 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
auto ride = get_ride(rideId);
if (ride != nullptr)
{
auto rideType = RideNaming[ride->type].name;
auto rideType = RideTypeDescriptors[ride->type].Naming.Name;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_RIDE_TYPE, &rideType, COLOUR_WHITE, x, y);
}
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_RIDE_ID, &rideId, COLOUR_WHITE, x, y + 11);

View File

@ -449,8 +449,8 @@ static void window_track_list_invalidate(rct_window* w)
if (entry != nullptr)
{
rct_ride_name rideName = get_ride_naming(_window_track_list_item.Type, entry);
stringId = rideName.name;
RideNaming rideName = get_ride_naming(_window_track_list_item.Type, entry);
stringId = rideName.Name;
}
Formatter::Common().Add<rct_string_id>(stringId);

View File

@ -3909,6 +3909,8 @@ enum
STR_SHORTCUT_TOGGLE_CLEARANCE_CHECKS = 6373,
STR_OVERLAY_CLEARANCE_CHECKS_DISABLED = 6374,
STR_UNKNOWN_RIDE = 6375,
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
/* MAX_STR_COUNT = 32768 */ // MAX_STR_COUNT - upper limit for number of strings, not the current count strings
};

View File

@ -260,7 +260,7 @@ void research_finish_item(ResearchItem* researchItem)
if (RideTypeDescriptors[base_ride_type].HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY))
{
availabilityString = STR_NEWS_ITEM_RESEARCH_NEW_RIDE_AVAILABLE;
ft.Add<rct_string_id>(rideEntry->naming.name);
ft.Add<rct_string_id>(rideEntry->naming.Name);
}
// If a vehicle is the first to be invented for its ride group, show the ride group name.
else if (
@ -268,19 +268,19 @@ void research_finish_item(ResearchItem* researchItem)
|| (RideTypeDescriptors[base_ride_type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS)
&& !ride_group_was_invented_before))
{
rct_ride_name naming = get_ride_naming(base_ride_type, rideEntry);
RideNaming naming = get_ride_naming(base_ride_type, rideEntry);
availabilityString = STR_NEWS_ITEM_RESEARCH_NEW_RIDE_AVAILABLE;
ft.Add<rct_string_id>(naming.name);
ft.Add<rct_string_id>(naming.Name);
}
// If the vehicle should not be listed separately and it isn't the first to be invented for its ride group,
// report it as a new vehicle for the existing ride group.
else
{
availabilityString = STR_NEWS_ITEM_RESEARCH_NEW_VEHICLE_AVAILABLE;
rct_ride_name baseRideNaming = get_ride_naming(base_ride_type, rideEntry);
RideNaming baseRideNaming = get_ride_naming(base_ride_type, rideEntry);
ft.Add<rct_string_id>(baseRideNaming.name);
ft.Add<rct_string_id>(rideEntry->naming.name);
ft.Add<rct_string_id>(baseRideNaming.Name);
ft.Add<rct_string_id>(rideEntry->naming.Name);
}
if (!gSilentResearch)
@ -713,7 +713,7 @@ rct_string_id ResearchItem::GetName() const
}
else
{
return rideEntry->naming.name;
return rideEntry->naming.Name;
}
}
else

View File

@ -166,8 +166,8 @@ void RideObject::Load()
_legacyType.obj = this;
GetStringTable().Sort();
_legacyType.naming.name = language_allocate_object_string(GetName());
_legacyType.naming.description = language_allocate_object_string(GetDescription());
_legacyType.naming.Name = language_allocate_object_string(GetName());
_legacyType.naming.Description = language_allocate_object_string(GetDescription());
_legacyType.capacity = language_allocate_object_string(GetCapacity());
_legacyType.images_offset = gfx_object_allocate_images(GetImageTable().GetImages(), GetImageTable().GetCount());
_legacyType.vehicle_preset_list = &_presetColours;
@ -343,13 +343,13 @@ void RideObject::Load()
void RideObject::Unload()
{
language_free_object_string(_legacyType.naming.name);
language_free_object_string(_legacyType.naming.description);
language_free_object_string(_legacyType.naming.Name);
language_free_object_string(_legacyType.naming.Description);
language_free_object_string(_legacyType.capacity);
gfx_object_free_images(_legacyType.images_offset, GetImageTable().GetCount());
_legacyType.naming.name = 0;
_legacyType.naming.description = 0;
_legacyType.naming.Name = 0;
_legacyType.naming.Description = 0;
_legacyType.capacity = 0;
_legacyType.images_offset = 0;
}

View File

@ -537,7 +537,7 @@ void S6Exporter::ExportRide(rct2_ride* dst, const Ride* src)
if (useDefaultName)
{
// Default name with number
dst->name = RideNaming[src->type].name;
dst->name = RideTypeDescriptors[src->type].Naming.Name;
dst->name_arguments_number = src->default_name_number;
}

View File

@ -5632,7 +5632,7 @@ void Ride::SetNameToDefault()
/**
* This will return the name of the ride, as seen in the New Ride window.
*/
rct_ride_name get_ride_naming(const uint8_t rideType, rct_ride_entry* rideEntry)
RideNaming get_ride_naming(const uint8_t rideType, rct_ride_entry* rideEntry)
{
if (RideTypeDescriptors[rideType].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
{
@ -5641,7 +5641,7 @@ rct_ride_name get_ride_naming(const uint8_t rideType, rct_ride_entry* rideEntry)
}
else if (!RideTypeDescriptors[rideType].HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY))
{
return RideNaming[rideType];
return RideTypeDescriptors[rideType].Naming;
}
else
{
@ -7746,13 +7746,13 @@ size_t Ride::FormatNameTo(void* argsV) const
}
else
{
auto rideTypeName = RideNaming[type].name;
auto rideTypeName = RideTypeDescriptors[type].Naming.Name;
if (RideTypeDescriptors[type].HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY))
{
auto rideEntry = GetRideEntry();
if (rideEntry != nullptr)
{
rideTypeName = rideEntry->naming.name;
rideTypeName = rideEntry->naming.Name;
}
}
else if (RideTypeDescriptors[type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
@ -7763,7 +7763,7 @@ size_t Ride::FormatNameTo(void* argsV) const
auto rideGroup = RideGroupManager::GetRideGroup(type, rideEntry);
if (rideGroup != nullptr)
{
rideTypeName = rideGroup->Naming.name;
rideTypeName = rideGroup->Naming.Name;
}
}
}

View File

@ -85,12 +85,12 @@ struct vehicle_colour_preset_list
};
assert_struct_size(vehicle_colour_preset_list, (1 + 256 * 3));
struct rct_ride_name
struct RideNaming
{
rct_string_id name;
rct_string_id description;
rct_string_id Name;
rct_string_id Description;
};
assert_struct_size(rct_ride_name, 4);
assert_struct_size(RideNaming, 4);
#pragma pack(pop)
@ -99,7 +99,7 @@ assert_struct_size(rct_ride_name, 4);
*/
struct rct_ride_entry
{
rct_ride_name naming;
RideNaming naming;
// The first three images are previews. They correspond to the ride_type[] array.
uint32_t images_offset;
uint32_t flags;
@ -1126,7 +1126,7 @@ void ride_set_name(Ride* ride, const char* name, uint32_t flags);
int32_t ride_get_refund_price(const Ride* ride);
int32_t ride_get_random_colour_preset_index(uint8_t ride_type);
money32 ride_get_common_price(Ride* forRide);
rct_ride_name get_ride_naming(const uint8_t rideType, rct_ride_entry* rideEntry);
RideNaming get_ride_naming(const uint8_t rideType, rct_ride_entry* rideEntry);
void ride_clear_for_construction(Ride* ride);
void ride_entrance_exit_place_provisional_ghost();

View File

@ -205,100 +205,6 @@ const uint8_t rideBonusValue[RIDE_TYPE_COUNT] = {
55, // 5a LIM Launched Roller Coaster
};
const rct_ride_name RideNaming[] = {
{ STR_RIDE_NAME_SPIRAL_ROLLER_COASTER, STR_RIDE_DESCRIPTION_SPIRAL_ROLLER_COASTER }, // RIDE_TYPE_SPIRAL_ROLLER_COASTER
{ STR_RIDE_NAME_STAND_UP_ROLLER_COASTER, STR_RIDE_DESCRIPTION_STAND_UP_ROLLER_COASTER }, // RIDE_TYPE_STAND_UP_ROLLER_COASTER
{ STR_RIDE_NAME_SUSPENDED_SWINGING_COASTER, STR_RIDE_DESCRIPTION_SUSPENDED_SWINGING_COASTER }, // RIDE_TYPE_SUSPENDED_SWINGING_COASTER
{ STR_RIDE_NAME_INVERTED_ROLLER_COASTER, STR_RIDE_DESCRIPTION_INVERTED_ROLLER_COASTER }, // RIDE_TYPE_INVERTED_ROLLER_COASTER
{ STR_RIDE_NAME_JUNIOR_ROLLER_COASTER, STR_RIDE_DESCRIPTION_JUNIOR_ROLLER_COASTER }, // RIDE_TYPE_JUNIOR_ROLLER_COASTER
{ STR_RIDE_NAME_MINIATURE_RAILWAY, STR_RIDE_DESCRIPTION_MINIATURE_RAILWAY }, // RIDE_TYPE_MINIATURE_RAILWAY
{ STR_RIDE_NAME_MONORAIL, STR_RIDE_DESCRIPTION_MONORAIL }, // RIDE_TYPE_MONORAIL
{ STR_RIDE_NAME_MINI_SUSPENDED_COASTER, STR_RIDE_DESCRIPTION_MINI_SUSPENDED_COASTER }, // RIDE_TYPE_MINI_SUSPENDED_COASTER
{ STR_RIDE_NAME_BOAT_HIRE, STR_RIDE_DESCRIPTION_BOAT_HIRE }, // RIDE_TYPE_BOAT_HIRE
{ STR_RIDE_NAME_WOODEN_WILD_MOUSE, STR_RIDE_DESCRIPTION_WOODEN_WILD_MOUSE }, // RIDE_TYPE_WOODEN_WILD_MOUSE
{ STR_RIDE_NAME_STEEPLECHASE, STR_RIDE_DESCRIPTION_STEEPLECHASE }, // RIDE_TYPE_STEEPLECHASE
{ STR_RIDE_NAME_CAR_RIDE, STR_RIDE_DESCRIPTION_CAR_RIDE }, // RIDE_TYPE_CAR_RIDE
{ STR_RIDE_NAME_LAUNCHED_FREEFALL, STR_RIDE_DESCRIPTION_LAUNCHED_FREEFALL }, // RIDE_TYPE_LAUNCHED_FREEFALL
{ STR_RIDE_NAME_BOBSLEIGH_COASTER, STR_RIDE_DESCRIPTION_BOBSLEIGH_COASTER }, // RIDE_TYPE_BOBSLEIGH_COASTER
{ STR_RIDE_NAME_OBSERVATION_TOWER, STR_RIDE_DESCRIPTION_OBSERVATION_TOWER }, // RIDE_TYPE_OBSERVATION_TOWER
{ STR_RIDE_NAME_LOOPING_ROLLER_COASTER, STR_RIDE_DESCRIPTION_LOOPING_ROLLER_COASTER }, // RIDE_TYPE_LOOPING_ROLLER_COASTER
{ STR_RIDE_NAME_DINGHY_SLIDE, STR_RIDE_DESCRIPTION_DINGHY_SLIDE }, // RIDE_TYPE_DINGHY_SLIDE
{ STR_RIDE_NAME_MINE_TRAIN_COASTER, STR_RIDE_DESCRIPTION_MINE_TRAIN_COASTER }, // RIDE_TYPE_MINE_TRAIN_COASTER
{ STR_RIDE_NAME_CHAIRLIFT, STR_RIDE_DESCRIPTION_CHAIRLIFT }, // RIDE_TYPE_CHAIRLIFT
{ STR_RIDE_NAME_CORKSCREW_ROLLER_COASTER, STR_RIDE_DESCRIPTION_CORKSCREW_ROLLER_COASTER }, // RIDE_TYPE_CORKSCREW_ROLLER_COASTER
{ STR_RIDE_NAME_MAZE, STR_RIDE_DESCRIPTION_MAZE }, // RIDE_TYPE_MAZE
{ STR_RIDE_NAME_SPIRAL_SLIDE, STR_RIDE_DESCRIPTION_SPIRAL_SLIDE }, // RIDE_TYPE_SPIRAL_SLIDE
{ STR_RIDE_NAME_GO_KARTS, STR_RIDE_DESCRIPTION_GO_KARTS }, // RIDE_TYPE_GO_KARTS
{ STR_RIDE_NAME_LOG_FLUME, STR_RIDE_DESCRIPTION_LOG_FLUME }, // RIDE_TYPE_LOG_FLUME
{ STR_RIDE_NAME_RIVER_RAPIDS, STR_RIDE_DESCRIPTION_RIVER_RAPIDS }, // RIDE_TYPE_RIVER_RAPIDS
{ STR_RIDE_NAME_DODGEMS, STR_RIDE_DESCRIPTION_DODGEMS }, // RIDE_TYPE_DODGEMS
{ STR_RIDE_NAME_PIRATE_SHIP, STR_RIDE_DESCRIPTION_PIRATE_SHIP }, // RIDE_TYPE_SWINGING_SHIP
{ STR_RIDE_NAME_SWINGING_INVERTER_SHIP, STR_RIDE_DESCRIPTION_SWINGING_INVERTER_SHIP }, // RIDE_TYPE_SWINGING_INVERTER_SHIP
{ STR_RIDE_NAME_FOOD_STALL, STR_RIDE_DESCRIPTION_FOOD_STALL }, // RIDE_TYPE_FOOD_STALL
{ STR_RIDE_NAME_1D, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_1D
{ STR_RIDE_NAME_DRINK_STALL, STR_RIDE_DESCRIPTION_DRINK_STALL }, // RIDE_TYPE_DRINK_STALL
{ STR_RIDE_NAME_1F, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_1F
{ STR_RIDE_NAME_SHOP, STR_RIDE_DESCRIPTION_SHOP }, // RIDE_TYPE_SHOP
{ STR_RIDE_NAME_MERRY_GO_ROUND, STR_RIDE_DESCRIPTION_MERRY_GO_ROUND }, // RIDE_TYPE_MERRY_GO_ROUND
{ STR_RIDE_NAME_22, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_22
{ STR_RIDE_NAME_INFORMATION_KIOSK, STR_RIDE_DESCRIPTION_INFORMATION_KIOSK }, // RIDE_TYPE_INFORMATION_KIOSK
{ STR_RIDE_NAME_TOILETS, STR_RIDE_DESCRIPTION_TOILETS }, // RIDE_TYPE_TOILETS
{ STR_RIDE_NAME_FERRIS_WHEEL, STR_RIDE_DESCRIPTION_FERRIS_WHEEL }, // RIDE_TYPE_FERRIS_WHEEL
{ STR_RIDE_NAME_MOTION_SIMULATOR, STR_RIDE_DESCRIPTION_MOTION_SIMULATOR }, // RIDE_TYPE_MOTION_SIMULATOR
{ STR_RIDE_NAME_3D_CINEMA, STR_RIDE_DESCRIPTION_3D_CINEMA }, // RIDE_TYPE_3D_CINEMA
{ STR_RIDE_NAME_TOP_SPIN, STR_RIDE_DESCRIPTION_TOP_SPIN }, // RIDE_TYPE_TOP_SPIN
{ STR_RIDE_NAME_SPACE_RINGS, STR_RIDE_DESCRIPTION_SPACE_RINGS }, // RIDE_TYPE_SPACE_RINGS
{ STR_RIDE_NAME_REVERSE_FREEFALL_COASTER, STR_RIDE_DESCRIPTION_REVERSE_FREEFALL_COASTER }, // RIDE_TYPE_REVERSE_FREEFALL_COASTER
{ STR_RIDE_NAME_LIFT, STR_RIDE_DESCRIPTION_LIFT }, // RIDE_TYPE_LIFT
{ STR_RIDE_NAME_VERTICAL_DROP_ROLLER_COASTER, STR_RIDE_DESCRIPTION_VERTICAL_DROP_ROLLER_COASTER }, // RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER
{ STR_RIDE_NAME_CASH_MACHINE, STR_RIDE_DESCRIPTION_CASH_MACHINE }, // RIDE_TYPE_CASH_MACHINE
{ STR_RIDE_NAME_TWIST, STR_RIDE_DESCRIPTION_TWIST }, // RIDE_TYPE_TWIST
{ STR_RIDE_NAME_HAUNTED_HOUSE, STR_RIDE_DESCRIPTION_HAUNTED_HOUSE }, // RIDE_TYPE_HAUNTED_HOUSE
{ STR_RIDE_NAME_FIRST_AID, STR_RIDE_DESCRIPTION_FIRST_AID }, // RIDE_TYPE_FIRST_AID
{ STR_RIDE_NAME_CIRCUS_SHOW, STR_RIDE_DESCRIPTION_CIRCUS_SHOW }, // RIDE_TYPE_CIRCUS
{ STR_RIDE_NAME_GHOST_TRAIN, STR_RIDE_DESCRIPTION_GHOST_TRAIN }, // RIDE_TYPE_GHOST_TRAIN
{ STR_RIDE_NAME_TWISTER_ROLLER_COASTER, STR_RIDE_DESCRIPTION_TWISTER_ROLLER_COASTER }, // RIDE_TYPE_TWISTER_ROLLER_COASTER
{ STR_RIDE_NAME_WOODEN_ROLLER_COASTER, STR_RIDE_DESCRIPTION_WOODEN_ROLLER_COASTER }, // RIDE_TYPE_WOODEN_ROLLER_COASTER
{ STR_RIDE_NAME_SIDE_FRICTION_ROLLER_COASTER, STR_RIDE_DESCRIPTION_SIDE_FRICTION_ROLLER_COASTER }, // RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER
{ STR_RIDE_NAME_WILD_MOUSE, STR_RIDE_DESCRIPTION_WILD_MOUSE }, // RIDE_TYPE_STEEL_WILD_MOUSE
{ STR_RIDE_NAME_MULTI_DIMENSION_ROLLER_COASTER, STR_RIDE_DESCRIPTION_MULTI_DIMENSION_ROLLER_COASTER }, // RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER
{ STR_RIDE_NAME_38, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_38
{ STR_RIDE_NAME_FLYING_ROLLER_COASTER, STR_RIDE_DESCRIPTION_FLYING_ROLLER_COASTER }, // RIDE_TYPE_FLYING_ROLLER_COASTER
{ STR_RIDE_NAME_3A, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_3A
{ STR_RIDE_NAME_VIRGINIA_REEL, STR_RIDE_DESCRIPTION_VIRGINIA_REEL }, // RIDE_TYPE_VIRGINIA_REEL
{ STR_RIDE_NAME_SPLASH_BOATS, STR_RIDE_DESCRIPTION_SPLASH_BOATS }, // RIDE_TYPE_SPLASH_BOATS
{ STR_RIDE_NAME_MINI_HELICOPTERS, STR_RIDE_DESCRIPTION_MINI_HELICOPTERS }, // RIDE_TYPE_MINI_HELICOPTERS
{ STR_RIDE_NAME_LAY_DOWN_ROLLER_COASTER, STR_RIDE_DESCRIPTION_LAY_DOWN_ROLLER_COASTER }, // RIDE_TYPE_LAY_DOWN_ROLLER_COASTER
{ STR_RIDE_NAME_SUSPENDED_MONORAIL, STR_RIDE_DESCRIPTION_SUSPENDED_MONORAIL }, // RIDE_TYPE_SUSPENDED_MONORAIL
{ STR_RIDE_NAME_40, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_40
{ STR_RIDE_NAME_REVERSER_ROLLER_COASTER, STR_RIDE_DESCRIPTION_REVERSER_ROLLER_COASTER }, // RIDE_TYPE_REVERSER_ROLLER_COASTER
{ STR_RIDE_NAME_HEARTLINE_TWISTER_COASTER, STR_RIDE_DESCRIPTION_HEARTLINE_TWISTER_COASTER }, // RIDE_TYPE_HEARTLINE_TWISTER_COASTER
{ STR_RIDE_NAME_MINI_GOLF, STR_RIDE_DESCRIPTION_MINI_GOLF }, // RIDE_TYPE_MINI_GOLF
{ STR_RIDE_NAME_GIGA_COASTER, STR_RIDE_DESCRIPTION_GIGA_COASTER }, // RIDE_TYPE_GIGA_COASTER
{ STR_RIDE_NAME_ROTO_DROP, STR_RIDE_DESCRIPTION_ROTO_DROP }, // RIDE_TYPE_ROTO_DROP
{ STR_RIDE_NAME_FLYING_SAUCERS, STR_RIDE_DESCRIPTION_FLYING_SAUCERS }, // RIDE_TYPE_FLYING_SAUCERS
{ STR_RIDE_NAME_CROOKED_HOUSE, STR_RIDE_DESCRIPTION_CROOKED_HOUSE }, // RIDE_TYPE_CROOKED_HOUSE
{ STR_RIDE_NAME_MONORAIL_CYCLES, STR_RIDE_DESCRIPTION_MONORAIL_CYCLES }, // RIDE_TYPE_MONORAIL_CYCLES
{ STR_RIDE_NAME_COMPACT_INVERTED_COASTER, STR_RIDE_DESCRIPTION_COMPACT_INVERTED_COASTER }, // RIDE_TYPE_COMPACT_INVERTED_COASTER
{ STR_RIDE_NAME_WATER_COASTER, STR_RIDE_DESCRIPTION_WATER_COASTER }, // RIDE_TYPE_WATER_COASTER
{ STR_RIDE_NAME_AIR_POWERED_VERTICAL_COASTER, STR_RIDE_DESCRIPTION_AIR_POWERED_VERTICAL_COASTER }, // RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER
{ STR_RIDE_NAME_INVERTED_HAIRPIN_COASTER, STR_RIDE_DESCRIPTION_INVERTED_HAIRPIN_COASTER }, // RIDE_TYPE_INVERTED_HAIRPIN_COASTER
{ STR_RIDE_NAME_MAGIC_CARPET, STR_RIDE_DESCRIPTION_MAGIC_CARPET }, // RIDE_TYPE_MAGIC_CARPET
{ STR_RIDE_NAME_SUBMARINE_RIDE, STR_RIDE_DESCRIPTION_SUBMARINE_RIDE }, // RIDE_TYPE_SUBMARINE_RIDE
{ STR_RIDE_NAME_RIVER_RAFTS, STR_RIDE_DESCRIPTION_RIVER_RAFTS }, // RIDE_TYPE_RIVER_RAFTS
{ STR_RIDE_NAME_50, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_50
{ STR_RIDE_NAME_ENTERPRISE, STR_RIDE_DESCRIPTION_ENTERPRISE }, // RIDE_TYPE_ENTERPRISE
{ STR_RIDE_NAME_52, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_52
{ STR_RIDE_NAME_53, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_53
{ STR_RIDE_NAME_54, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_54
{ STR_RIDE_NAME_55, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_55
{ STR_RIDE_NAME_INVERTED_IMPULSE_COASTER, STR_RIDE_DESCRIPTION_INVERTED_IMPULSE_COASTER }, // RIDE_TYPE_INVERTED_IMPULSE_COASTER
{ STR_RIDE_NAME_MINI_ROLLER_COASTER, STR_RIDE_DESCRIPTION_MINI_ROLLER_COASTER }, // RIDE_TYPE_MINI_ROLLER_COASTER
{ STR_RIDE_NAME_MINE_RIDE, STR_RIDE_DESCRIPTION_MINE_RIDE }, // RIDE_TYPE_MINE_RIDE
{ STR_RIDE_NAME_59, STR_RIDE_DESCRIPTION_UNKNOWN }, // RIDE_TYPE_59
{ STR_RIDE_NAME_LIM_LAUNCHED_ROLLER_COASTER, STR_RIDE_DESCRIPTION_LIM_LAUNCHED_ROLLER_COASTER }, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER
};
const rct_ride_entry_vehicle CableLiftVehicle = {
/* .rotation_frame_mask = */ 31,
/* .num_vertical_frames = */ 0,

View File

@ -113,6 +113,7 @@ struct RideTypeDescriptor
/** rct2: 0x0097C8AC */
uint64_t RideModes;
uint8_t DefaultMode;
RideNaming Naming;
RideNameConvention NameConvention;
uint8_t AvailableBreakdowns;
/** rct2: 0x0097D218 */
@ -248,8 +249,6 @@ constexpr const RideComponentName RideComponentNames[] =
};
// clang-format on
extern const rct_ride_name RideNaming[RIDE_TYPE_COUNT];
constexpr const uint64_t AllRideModesAvailable = (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)
| (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED) | (1ULL << RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE)
| (1ULL << RIDE_MODE_POWERED_LAUNCH_PASSTROUGH) | (1ULL << RIDE_MODE_SHUTTLE) | (1ULL << RIDE_MODE_NORMAL)
@ -287,6 +286,7 @@ constexpr const RideTypeDescriptor DummyRTD =
SET_FIELD(Flags, 0),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_UNKNOWN_RIDE, STR_RIDE_DESCRIPTION_UNKNOWN }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(Heights, { 12, 64, 0, 0, }),

View File

@ -163,7 +163,7 @@ static constexpr const RideGroup steel_wild_mouse_groups[MAX_RIDE_GROUPS_PER_RID
bool RideGroup::Equals(const RideGroup* otherRideGroup) const
{
return this->Naming.name == otherRideGroup->Naming.name && this->Naming.description == otherRideGroup->Naming.description;
return this->Naming.Name == otherRideGroup->Naming.Name && this->Naming.Description == otherRideGroup->Naming.Description;
}
bool RideGroup::IsInvented() const

View File

@ -21,7 +21,7 @@ struct RideGroup
uint8_t RideType;
uint16_t MaximumHeight;
uint64_t AvailableTrackPieces;
rct_ride_name Naming;
RideNaming Naming;
uint8_t Flags;
bool Equals(const RideGroup* otherRideGroup) const;

View File

@ -25,6 +25,7 @@ constexpr const RideTypeDescriptor AirPoweredVerticalCoasterRTD =
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_POWERED_LAUNCH_PASSTROUGH) | (1ULL << RIDE_MODE_POWERED_LAUNCH)),
SET_FIELD(DefaultMode, RIDE_MODE_POWERED_LAUNCH_PASSTROUGH),
SET_FIELD(Naming, { STR_RIDE_NAME_AIR_POWERED_VERTICAL_COASTER, STR_RIDE_DESCRIPTION_AIR_POWERED_VERTICAL_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 255, 32, 4, 7, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor BobsleighCoasterRTD =
RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_BOBSLEIGH_COASTER, STR_RIDE_DESCRIPTION_BOBSLEIGH_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 19, 24, 5, 7, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor CompactInvertedCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_IS_SUSPENDED),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED) | (1ULL << RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_COMPACT_INVERTED_COASTER, STR_RIDE_DESCRIPTION_COMPACT_INVERTED_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 27, 40, 29, 8, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor CorkscrewRollerCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_HAS_RIDE_GROUPS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED) | (1ULL << RIDE_MODE_POWERED_LAUNCH_PASSTROUGH) | (1ULL << RIDE_MODE_POWERED_LAUNCH) | (1ULL << RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_CORKSCREW_ROLLER_COASTER, STR_RIDE_DESCRIPTION_CORKSCREW_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 28, 24, 8, 11, }),

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor FlyingRollerCoasterRTD =
RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_START_CONSTRUCTION_INVERTED),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_FLYING_ROLLER_COASTER, STR_RIDE_DESCRIPTION_FLYING_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 30, 24, 8, 11, }),
@ -55,6 +56,7 @@ constexpr const RideTypeDescriptor FlyingRollerCoasterAltRTD =
RIDE_TYPE_FLAG_START_CONSTRUCTION_INVERTED),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_3A, STR_RIDE_DESCRIPTION_UNKNOWN }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 30, 24, 8, 11, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor GigaCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_ALLOW_CABLE_LIFT_HILL),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_GIGA_COASTER, STR_RIDE_DESCRIPTION_GIGA_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 86, 24, 9, 11, }),

View File

@ -26,6 +26,7 @@ constexpr const RideTypeDescriptor HeartlineTwisterCoasterRTD =
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_HEARTLINE_TWISTER_COASTER, STR_RIDE_DESCRIPTION_HEARTLINE_TWISTER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 22, 24, 15, 9, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor InvertedHairpinCoasterRTD =
RIDE_TYPE_FLAG_IS_SUSPENDED),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_INVERTED_HAIRPIN_COASTER, STR_RIDE_DESCRIPTION_INVERTED_HAIRPIN_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 16, 24, 24, 7, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor InvertedImpulseCoasterRTD =
RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_IS_SUSPENDED),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_POWERED_LAUNCH_PASSTROUGH) | (1ULL << RIDE_MODE_POWERED_LAUNCH)),
SET_FIELD(DefaultMode, RIDE_MODE_POWERED_LAUNCH_PASSTROUGH),
SET_FIELD(Naming, { STR_RIDE_NAME_INVERTED_IMPULSE_COASTER, STR_RIDE_DESCRIPTION_INVERTED_IMPULSE_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 45, 40, 29, 8, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor InvertedRollerCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_IS_SUSPENDED),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED) | (1ULL << RIDE_MODE_POWERED_LAUNCH_PASSTROUGH) | (1ULL << RIDE_MODE_POWERED_LAUNCH)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_INVERTED_ROLLER_COASTER, STR_RIDE_DESCRIPTION_INVERTED_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 38, 40, 29, 8, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor JuniorRollerCoasterRTD =
RIDE_TYPE_FLAG_HAS_RIDE_GROUPS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED) | (1ULL << RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_JUNIOR_ROLLER_COASTER, STR_RIDE_DESCRIPTION_JUNIOR_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 15, 24, 4, 7, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor LIMLaunchedRollerCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_POWERED_LAUNCH_PASSTROUGH) | (1ULL << RIDE_MODE_POWERED_LAUNCH) | (1ULL << RIDE_MODE_POWERED_LAUNCH_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_POWERED_LAUNCH_PASSTROUGH),
SET_FIELD(Naming, { STR_RIDE_NAME_LIM_LAUNCHED_ROLLER_COASTER, STR_RIDE_DESCRIPTION_LIM_LAUNCHED_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 35, 24, 5, 7, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor LayDownRollerCoasterRTD =
RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_LAY_DOWN_ROLLER_COASTER, STR_RIDE_DESCRIPTION_LAY_DOWN_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 26, 24, 8, 11, }),
@ -51,6 +52,7 @@ constexpr const RideTypeDescriptor LayDownRollerCoasterAltRTD =
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAG_HAS_LARGE_CURVES),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_40, STR_RIDE_DESCRIPTION_UNKNOWN }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 26, 24, 8, 11, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor LoopingRollerCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED) | (1ULL << RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE) | (1ULL << RIDE_MODE_POWERED_LAUNCH_PASSTROUGH) | (1ULL << RIDE_MODE_POWERED_LAUNCH)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_LOOPING_ROLLER_COASTER, STR_RIDE_DESCRIPTION_LOOPING_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 35, 24, 5, 7, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor MineRideRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_MINE_RIDE, STR_RIDE_DESCRIPTION_MINE_RIDE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 13, 24, 9, 11, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor MineTrainCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_MINE_TRAIN_COASTER, STR_RIDE_DESCRIPTION_MINE_TRAIN_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 21, 24, 4, 7, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor MiniRollerCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_MINI_ROLLER_COASTER, STR_RIDE_DESCRIPTION_MINI_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 16, 24, 9, 11, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor MiniSuspendedCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_IS_SUSPENDED),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_MINI_SUSPENDED_COASTER, STR_RIDE_DESCRIPTION_MINI_SUSPENDED_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 10, 24, 24, 8, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor MultiDimensionRollerCoasterRTD =
RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_MULTI_DIMENSION_ROLLER_COASTER, STR_RIDE_DESCRIPTION_MULTI_DIMENSION_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 40, 24, 8, 11, }),
@ -52,6 +53,7 @@ constexpr const RideTypeDescriptor MultiDimensionRollerCoasterAltRTD =
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAG_HAS_LARGE_CURVES),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_38, STR_RIDE_DESCRIPTION_UNKNOWN }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 40, 24, 8, 11, }),

View File

@ -25,6 +25,7 @@ constexpr const RideTypeDescriptor ReverseFreefallCoasterRTD =
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_LIM_POWERED_LAUNCH)),
SET_FIELD(DefaultMode, RIDE_MODE_LIM_POWERED_LAUNCH),
SET_FIELD(Naming, { STR_RIDE_NAME_REVERSE_FREEFALL_COASTER, STR_RIDE_DESCRIPTION_REVERSE_FREEFALL_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 255, 32, 4, 7, }),

View File

@ -26,6 +26,7 @@ constexpr const RideTypeDescriptor ReverserRollerCoasterRTD =
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_REVERSER_ROLLER_COASTER, STR_RIDE_DESCRIPTION_REVERSER_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 18, 24, 8, 11, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor SideFrictionRollerCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_SIDE_FRICTION_ROLLER_COASTER, STR_RIDE_DESCRIPTION_SIDE_FRICTION_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 15, 24, 4, 11, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor SpiralRollerCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_SPIRAL_ROLLER_COASTER, STR_RIDE_DESCRIPTION_SPIRAL_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 19, 24, 9, 11, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor StandUpRollerCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED) | (1ULL << RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE) | (1ULL << RIDE_MODE_POWERED_LAUNCH_PASSTROUGH) | (1ULL << RIDE_MODE_POWERED_LAUNCH)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_STAND_UP_ROLLER_COASTER, STR_RIDE_DESCRIPTION_STAND_UP_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 25, 24, 9, 11, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor SteelWildMouseRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_HAS_RIDE_GROUPS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_WILD_MOUSE, STR_RIDE_DESCRIPTION_WILD_MOUSE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 16, 24, 4, 7, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor SteeplechaseRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_STEEPLECHASE, STR_RIDE_DESCRIPTION_STEEPLECHASE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 14, 24, 7, 7, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor SuspendedSwingingCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_IS_SUSPENDED),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_SUSPENDED_SWINGING_COASTER, STR_RIDE_DESCRIPTION_SUSPENDED_SWINGING_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 24, 40, 29, 8, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor TwisterRollerCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_HAS_RIDE_GROUPS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_TWISTER_ROLLER_COASTER, STR_RIDE_DESCRIPTION_TWISTER_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 54, 24, 8, 9, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor VerticalDropCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_VERTICAL_DROP_ROLLER_COASTER, STR_RIDE_DESCRIPTION_VERTICAL_DROP_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 53, 24, 8, 11, }),

View File

@ -26,6 +26,7 @@ constexpr const RideTypeDescriptor VirginiaReelRTD =
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_VIRGINIA_REEL, STR_RIDE_DESCRIPTION_VIRGINIA_REEL }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 14, 24, 6, 7, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor WaterCoasterRTD =
RIDE_TYPE_FLAG_TRACK_ELEMENTS_HAVE_TWO_VARIETIES | RIDE_TYPE_FLAG_HAS_LARGE_CURVES | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_WATER_COASTER, STR_RIDE_DESCRIPTION_WATER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 18, 24, 4, 7, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor WoodenRollerCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT_BLOCK_SECTIONED) | (1ULL << RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE) ),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_WOODEN_ROLLER_COASTER, STR_RIDE_DESCRIPTION_WOODEN_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 41, 24, 8, 11, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor WoodenWildMouseRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_WOODEN_WILD_MOUSE, STR_RIDE_DESCRIPTION_WOODEN_WILD_MOUSE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(Heights, { 14, 24, 4, 7, }),

View File

@ -30,6 +30,7 @@ constexpr const RideTypeDescriptor CarRideRTD =
RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_HAS_RIDE_GROUPS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_CAR_RIDE, STR_RIDE_DESCRIPTION_CAR_RIDE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 6, 24, 4, 7, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor CircusRTD =
RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_SINGLE_SESSION | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CIRCUS_SHOW)),
SET_FIELD(DefaultMode, RIDE_MODE_CIRCUS_SHOW),
SET_FIELD(Naming, { STR_RIDE_NAME_CIRCUS_SHOW, STR_RIDE_DESCRIPTION_CIRCUS_SHOW }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 12, 128, 3, 2, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor CrookedHouseRTD =
RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CROOKED_HOUSE)),
SET_FIELD(DefaultMode, RIDE_MODE_CROOKED_HOUSE),
SET_FIELD(Naming, { STR_RIDE_NAME_CROOKED_HOUSE, STR_RIDE_DESCRIPTION_CROOKED_HOUSE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(Heights, { 16, 96, 3, 2, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor DodgemsRTD =
RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_DODGEMS)),
SET_FIELD(DefaultMode, RIDE_MODE_DODGEMS),
SET_FIELD(Naming, { STR_RIDE_NAME_DODGEMS, STR_RIDE_DESCRIPTION_DODGEMS }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 9, 48, 2, 2, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor FerrisWheelRTD =
RIDE_TYPE_FLAG_SINGLE_SESSION | RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_FORWARD_ROTATION) | (1ULL << RIDE_MODE_BACKWARD_ROTATION)),
SET_FIELD(DefaultMode, RIDE_MODE_FORWARD_ROTATION),
SET_FIELD(Naming, { STR_RIDE_NAME_FERRIS_WHEEL, STR_RIDE_DESCRIPTION_FERRIS_WHEEL }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_WHEEL, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 16, 176, 3, 2, }),

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor FlyingSaucersRTD =
RIDE_TYPE_FLAG_SINGLE_SESSION | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_DODGEMS)),
SET_FIELD(DefaultMode, RIDE_MODE_DODGEMS),
SET_FIELD(Naming, { STR_RIDE_NAME_FLYING_SAUCERS, STR_RIDE_DESCRIPTION_FLYING_SAUCERS }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 9, 48, 2, 2, }),

View File

@ -30,6 +30,7 @@ constexpr const RideTypeDescriptor GhostTrainRTD =
RIDE_TYPE_FLAG_HAS_AIR_TIME | RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_GHOST_TRAIN, STR_RIDE_DESCRIPTION_GHOST_TRAIN }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 8, 24, 6, 7, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor HauntedHouseRTD =
RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_HAUNTED_HOUSE)),
SET_FIELD(DefaultMode, RIDE_MODE_HAUNTED_HOUSE),
SET_FIELD(Naming, { STR_RIDE_NAME_HAUNTED_HOUSE, STR_RIDE_DESCRIPTION_HAUNTED_HOUSE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 16, 160, 3, 2, }),

View File

@ -26,6 +26,7 @@ constexpr const RideTypeDescriptor MazeRTD =
RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_MAZE)),
SET_FIELD(DefaultMode, RIDE_MODE_MAZE),
SET_FIELD(Naming, { STR_RIDE_NAME_MAZE, STR_RIDE_DESCRIPTION_MAZE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(Heights, { 6, 24, 0, 1, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor MerryGoRoundRTD =
RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_SINGLE_SESSION | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_ROTATION)),
SET_FIELD(DefaultMode, RIDE_MODE_ROTATION),
SET_FIELD(Naming, { STR_RIDE_NAME_MERRY_GO_ROUND, STR_RIDE_DESCRIPTION_MERRY_GO_ROUND }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_CONTROL_FAILURE)),
SET_FIELD(Heights, { 12, 64, 3, 2, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor MiniGolfRTD =
RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_MINI_GOLF, STR_RIDE_DESCRIPTION_MINI_GOLF }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_PLAYER, RIDE_COMPONENT_TYPE_COURSE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(Heights, { 7, 32, 2, 2, }),

View File

@ -30,6 +30,7 @@ constexpr const RideTypeDescriptor MiniHelicoptersRTD =
RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_MINI_HELICOPTERS, STR_RIDE_DESCRIPTION_MINI_HELICOPTERS }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 7, 24, 4, 7, }),

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor MonorailCyclesRTD =
RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_MONORAIL_CYCLES, STR_RIDE_DESCRIPTION_MONORAIL_CYCLES }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 5, 24, 8, 7, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor ObservationTowerRTD =
RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_ROTATING_LIFT)),
SET_FIELD(DefaultMode, RIDE_MODE_ROTATING_LIFT),
SET_FIELD(Naming, { STR_RIDE_NAME_OBSERVATION_TOWER, STR_RIDE_DESCRIPTION_OBSERVATION_TOWER }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CABIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 255, 32, 3, 2, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor SpaceRingsRTD =
RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SPACE_RINGS)),
SET_FIELD(DefaultMode, RIDE_MODE_SPACE_RINGS),
SET_FIELD(Naming, { STR_RIDE_NAME_SPACE_RINGS, STR_RIDE_DESCRIPTION_SPACE_RINGS }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_RING, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 16, 48, 3, 2, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor SpiralSlideRTD =
RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SINGLE_RIDE_PER_ADMISSION) | (1ULL << RIDE_MODE_UNLIMITED_RIDES_PER_ADMISSION)),
SET_FIELD(DefaultMode, RIDE_MODE_SINGLE_RIDE_PER_ADMISSION),
SET_FIELD(Naming, { STR_RIDE_NAME_SPIRAL_SLIDE, STR_RIDE_DESCRIPTION_SPIRAL_SLIDE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 15, 128, 0, 2, }),

View File

@ -26,6 +26,7 @@ constexpr const RideTypeDescriptor CashMachineRTD =
RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SHOP_STALL)),
SET_FIELD(DefaultMode, RIDE_MODE_SHOP_STALL),
SET_FIELD(Naming, { STR_RIDE_NAME_CASH_MACHINE, STR_RIDE_DESCRIPTION_CASH_MACHINE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(Heights, { 12, 32, 0, 0, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor DrinkStallRTD =
RIDE_TYPE_FLAG_SELLS_DRINKS | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SHOP_STALL)),
SET_FIELD(DefaultMode, RIDE_MODE_SHOP_STALL),
SET_FIELD(Naming, { STR_RIDE_NAME_DRINK_STALL, STR_RIDE_DESCRIPTION_DRINK_STALL }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(Heights, { 12, 64, 0, 0, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor FirstAidRTD =
RIDE_TYPE_FLAG_PEEP_SHOULD_GO_INSIDE_FACILITY | RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SHOP_STALL)),
SET_FIELD(DefaultMode, RIDE_MODE_SHOP_STALL),
SET_FIELD(Naming, { STR_RIDE_NAME_FIRST_AID, STR_RIDE_DESCRIPTION_FIRST_AID }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(Heights, { 12, 48, 0, 0, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor FoodStallRTD =
RIDE_TYPE_FLAG_SELLS_FOOD | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SHOP_STALL)),
SET_FIELD(DefaultMode, RIDE_MODE_SHOP_STALL),
SET_FIELD(Naming, { STR_RIDE_NAME_FOOD_STALL, STR_RIDE_DESCRIPTION_FOOD_STALL }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(Heights, { 12, 64, 0, 0, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor InformationKioskRTD =
RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SHOP_STALL)),
SET_FIELD(DefaultMode, RIDE_MODE_SHOP_STALL),
SET_FIELD(Naming, { STR_RIDE_NAME_INFORMATION_KIOSK, STR_RIDE_DESCRIPTION_INFORMATION_KIOSK }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(Heights, { 12, 48, 0, 0, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor ShopRTD =
RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SHOP_STALL)),
SET_FIELD(DefaultMode, RIDE_MODE_SHOP_STALL),
SET_FIELD(Naming, { STR_RIDE_NAME_SHOP, STR_RIDE_DESCRIPTION_SHOP }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(Heights, { 12, 64, 0, 0, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor ToiletsRTD =
RIDE_TYPE_FLAG_PEEP_SHOULD_GO_INSIDE_FACILITY | RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_IS_TOILET | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SHOP_STALL)),
SET_FIELD(DefaultMode, RIDE_MODE_SHOP_STALL),
SET_FIELD(Naming, { STR_RIDE_NAME_TOILETS, STR_RIDE_DESCRIPTION_TOILETS }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(Heights, { 12, 32, 0, 0, }),

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor CinemaRTD =
RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_SINGLE_SESSION | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_3D_FILM_MOUSE_TAILS) | (1ULL << RIDE_MODE_3D_FILM_STORM_CHASERS) | (1ULL << RIDE_MODE_3D_FILM_SPACE_RAIDERS)),
SET_FIELD(DefaultMode, RIDE_MODE_3D_FILM_MOUSE_TAILS),
SET_FIELD(Naming, { STR_RIDE_NAME_3D_CINEMA, STR_RIDE_DESCRIPTION_3D_CINEMA }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 12, 128, 3, 2, }),

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor EnterpriseRTD =
RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_ROTATION)),
SET_FIELD(DefaultMode, RIDE_MODE_ROTATION),
SET_FIELD(Naming, { STR_RIDE_NAME_ENTERPRISE, STR_RIDE_DESCRIPTION_ENTERPRISE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_WHEEL, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 16, 160, 3, 2, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor GoKartsRTD =
RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR | RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_RACE) | (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_RACE),
SET_FIELD(Naming, { STR_RIDE_NAME_GO_KARTS, STR_RIDE_DESCRIPTION_GO_KARTS }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 7, 24, 2, 1, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor LaunchedFreefallRTD =
RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_UPWARD_LAUNCH) | (1ULL << RIDE_MODE_DOWNWARD_LAUNCH)),
SET_FIELD(DefaultMode, RIDE_MODE_UPWARD_LAUNCH),
SET_FIELD(Naming, { STR_RIDE_NAME_LAUNCHED_FREEFALL, STR_RIDE_DESCRIPTION_LAUNCHED_FREEFALL }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 255, 32, 3, 2, }),

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor MagicCarpetRTD =
RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SWING)),
SET_FIELD(DefaultMode, RIDE_MODE_SWING),
SET_FIELD(Naming, { STR_RIDE_NAME_MAGIC_CARPET, STR_RIDE_DESCRIPTION_MAGIC_CARPET }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 15, 176, 7, 11, }),

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor MotionSimulatorRTD =
RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_FILM_AVENGING_AVIATORS) | (1ULL << RIDE_MODE_FILM_THRILL_RIDERS)),
SET_FIELD(DefaultMode, RIDE_MODE_FILM_AVENGING_AVIATORS),
SET_FIELD(Naming, { STR_RIDE_NAME_MOTION_SIMULATOR, STR_RIDE_DESCRIPTION_MOTION_SIMULATOR }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 12, 64, 3, 2, }),

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor RotoDropRTD =
RIDE_TYPE_FLAG_SINGLE_SESSION | RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_FREEFALL_DROP)),
SET_FIELD(DefaultMode, RIDE_MODE_FREEFALL_DROP),
SET_FIELD(Naming, { STR_RIDE_NAME_ROTO_DROP, STR_RIDE_DESCRIPTION_ROTO_DROP }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 255, 32, 3, 2, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor SwingingInverterShipRTD =
RIDE_TYPE_FLAG_SINGLE_SESSION | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SWING)),
SET_FIELD(DefaultMode, RIDE_MODE_SWING),
SET_FIELD(Naming, { STR_RIDE_NAME_SWINGING_INVERTER_SHIP, STR_RIDE_DESCRIPTION_SWINGING_INVERTER_SHIP }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_SHIP, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 15, 176, 7, 11, }),

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor SwingingShipRTD =
RIDE_TYPE_FLAG_SINGLE_SESSION | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SWING)),
SET_FIELD(DefaultMode, RIDE_MODE_SWING),
SET_FIELD(Naming, { STR_RIDE_NAME_PIRATE_SHIP, STR_RIDE_DESCRIPTION_PIRATE_SHIP }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_SHIP, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 12, 112, 7, 11, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor TopSpinRTD =
RIDE_TYPE_FLAG_SINGLE_SESSION | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_BEGINNERS) | (1ULL << RIDE_MODE_INTENSE) | (1ULL << RIDE_MODE_BERSERK)),
SET_FIELD(DefaultMode, RIDE_MODE_BEGINNERS),
SET_FIELD(Naming, { STR_RIDE_NAME_TOP_SPIN, STR_RIDE_DESCRIPTION_TOP_SPIN }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 16, 112, 3, 2, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor TwistRTD =
RIDE_TYPE_FLAG_SINGLE_SESSION | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_ROTATION)),
SET_FIELD(DefaultMode, RIDE_MODE_ROTATION),
SET_FIELD(Naming, { STR_RIDE_NAME_TWIST, STR_RIDE_DESCRIPTION_TWIST }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 12, 64, 3, 2, }),

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor ChairliftRTD =
RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_IS_SUSPENDED),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_STATION_TO_STATION)),
SET_FIELD(DefaultMode, RIDE_MODE_STATION_TO_STATION),
SET_FIELD(Naming, { STR_RIDE_NAME_CHAIRLIFT, STR_RIDE_DESCRIPTION_CHAIRLIFT }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 40, 32, 28, 2, }),

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor LiftRTD =
RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_TRANSPORT_RIDE | RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_SHUTTLE)),
SET_FIELD(DefaultMode, RIDE_MODE_SHUTTLE),
SET_FIELD(Naming, { STR_RIDE_NAME_LIFT, STR_RIDE_DESCRIPTION_LIFT }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CABIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_DOORS_STUCK_CLOSED) | (1 << BREAKDOWN_DOORS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 255, 32, 3, 2, }),

View File

@ -30,6 +30,7 @@ constexpr const RideTypeDescriptor MiniatureRailwayRTD =
RIDE_TYPE_FLAG_SUPPORTS_LEVEL_CROSSINGS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_SHUTTLE)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_MINIATURE_RAILWAY, STR_RIDE_DESCRIPTION_MINIATURE_RAILWAY }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 7, 32, 5, 9, }),

View File

@ -30,6 +30,7 @@ constexpr const RideTypeDescriptor MonorailRTD =
RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_TRANSPORT_RIDE | RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_SHUTTLE)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_MONORAIL, STR_RIDE_DESCRIPTION_MONORAIL }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_DOORS_STUCK_CLOSED) | (1 << BREAKDOWN_DOORS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 8, 32, 8, 9, }),

View File

@ -31,6 +31,7 @@ constexpr const RideTypeDescriptor SuspendedMonorailRTD =
RIDE_TYPE_FLAG_IS_SUSPENDED),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT) | (1ULL << RIDE_MODE_SHUTTLE)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_SUSPENDED_MONORAIL, STR_RIDE_DESCRIPTION_SUSPENDED_MONORAIL }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_DOORS_STUCK_CLOSED) | (1 << BREAKDOWN_DOORS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 12, 40, 32, 8, }),

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor BoatHireRTD =
RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR | RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_BOAT_HIRE)),
SET_FIELD(DefaultMode, RIDE_MODE_BOAT_HIRE),
SET_FIELD(Naming, { STR_RIDE_NAME_BOAT_HIRE, STR_RIDE_DESCRIPTION_BOAT_HIRE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_DOCKING_PLATFORM, RIDE_COMPONENT_TYPE_DOCKING_PLATFORM }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 255, 16, 0, 3, }),

View File

@ -31,6 +31,7 @@ constexpr const RideTypeDescriptor DinghySlideRTD =
RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_DINGHY_SLIDE, STR_RIDE_DESCRIPTION_DINGHY_SLIDE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 15, 24, 5, 7, }),

View File

@ -30,6 +30,7 @@ constexpr const RideTypeDescriptor LogFlumeRTD =
RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_LOG_FLUME, STR_RIDE_DESCRIPTION_LOG_FLUME }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_CONTROL_FAILURE)),
SET_FIELD(Heights, { 9, 24, 7, 9, }),

View File

@ -30,6 +30,7 @@ constexpr const RideTypeDescriptor RiverRaftsRTD =
RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_RIVER_RAFTS, STR_RIDE_DESCRIPTION_RIVER_RAFTS }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(Heights, { 12, 24, 7, 11, }),

View File

@ -31,6 +31,7 @@ constexpr const RideTypeDescriptor RiverRapidsRTD =
RIDE_TYPE_FLAG_HAS_AIR_TIME | RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_RIVER_RAPIDS, STR_RIDE_DESCRIPTION_RIVER_RAPIDS }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_CONTROL_FAILURE)),
SET_FIELD(Heights, { 9, 32, 14, 15, }),

View File

@ -30,6 +30,7 @@ constexpr const RideTypeDescriptor SplashBoatsRTD =
RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_SPLASH_BOATS, STR_RIDE_DESCRIPTION_SPLASH_BOATS }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_CONTROL_FAILURE)),
SET_FIELD(Heights, { 16, 24, 7, 11, }),

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor SubmarineRideRTD =
RIDE_TYPE_FLAG_ALLOW_MORE_VEHICLES_THAN_STATION_FITS),
SET_FIELD(RideModes, (1ULL << RIDE_MODE_CONTINUOUS_CIRCUIT)),
SET_FIELD(DefaultMode, RIDE_MODE_CONTINUOUS_CIRCUIT),
SET_FIELD(Naming, { STR_RIDE_NAME_SUBMARINE_RIDE, STR_RIDE_DESCRIPTION_SUBMARINE_RIDE }),
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_DOCKING_PLATFORM }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(Heights, { 255, 16, 0, 3, }),