OpenRCT2/src/openrct2/rct1/Tables.cpp

1413 lines
77 KiB
C++

/*****************************************************************************
* Copyright (c) 2014-2020 OpenRCT2 developers
*
* For a complete list of all authors, please refer to contributors.md
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
*
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
#include "Tables.h"
#include "../common.h"
#include "../core/Guard.hpp"
#include "../interface/Colour.h"
#include "../object/ObjectManager.h"
#include "../ride/Ride.h"
#include "../ride/RideData.h"
#include "../world/Surface.h"
#include "RCT1.h"
#include <iterator>
// clang-format off
namespace RCT1
{
colour_t GetColour(colour_t colour)
{
static constexpr const uint8_t map[] =
{
COLOUR_BLACK,
COLOUR_GREY,
COLOUR_WHITE,
COLOUR_LIGHT_PURPLE,
COLOUR_BRIGHT_PURPLE,
COLOUR_DARK_BLUE,
COLOUR_LIGHT_BLUE,
COLOUR_TEAL,
COLOUR_SATURATED_GREEN,
COLOUR_DARK_GREEN,
COLOUR_MOSS_GREEN,
COLOUR_BRIGHT_GREEN,
COLOUR_OLIVE_GREEN,
COLOUR_DARK_OLIVE_GREEN,
COLOUR_YELLOW,
COLOUR_DARK_YELLOW,
COLOUR_LIGHT_ORANGE,
COLOUR_DARK_ORANGE,
COLOUR_LIGHT_BROWN,
COLOUR_SATURATED_BROWN,
COLOUR_DARK_BROWN,
COLOUR_SALMON_PINK,
COLOUR_BORDEAUX_RED,
COLOUR_SATURATED_RED,
COLOUR_BRIGHT_RED,
COLOUR_BRIGHT_PINK,
COLOUR_LIGHT_PINK,
COLOUR_DARK_PINK,
COLOUR_DARK_PURPLE,
COLOUR_AQUAMARINE,
COLOUR_BRIGHT_YELLOW,
COLOUR_ICY_BLUE
};
if (colour >= std::size(map))
{
log_warning("Unsupported RCT1 colour.");
return COLOUR_BLACK;
}
return map[colour];
}
PeepSpriteType GetPeepSpriteType(uint8_t rct1SpriteType)
{
static constexpr const PeepSpriteType map[] =
{
PeepSpriteType::Normal, // 0x00
PeepSpriteType::Handyman, // 0x01
PeepSpriteType::Mechanic, // 0x02
PeepSpriteType::Security, // 0x03
PeepSpriteType::EntertainerPanda, // 0x04
PeepSpriteType::EntertainerTiger, // 0x05
PeepSpriteType::EntertainerElephant, // 0x06
PeepSpriteType::EntertainerRoman, // 0x07
PeepSpriteType::EntertainerGorilla, // 0x08
PeepSpriteType::EntertainerSnowman, // 0x09
PeepSpriteType::EntertainerKnight, // 0x0A
PeepSpriteType::EntertainerAstronaut, // 0x0B
PeepSpriteType::IceCream, // 0x0C
PeepSpriteType::Chips, // 0x0D
PeepSpriteType::Burger, // 0x0E
PeepSpriteType::Drink, // 0x0F
PeepSpriteType::Balloon, // 0x10
PeepSpriteType::Candyfloss, // 0x11
PeepSpriteType::Umbrella, // 0x12
PeepSpriteType::Pizza, // 0x13
PeepSpriteType::SecurityAlt, // 0x14
PeepSpriteType::Popcorn, // 0x15
PeepSpriteType::ArmsCrossed, // 0x16
PeepSpriteType::HeadDown, // 0x17
PeepSpriteType::Nauseous, // 0x18
PeepSpriteType::VeryNauseous, // 0x19
PeepSpriteType::RequireToilet, // 0x1A
PeepSpriteType::Hat, // 0x1B
PeepSpriteType::HotDog, // 0x1C
PeepSpriteType::Tentacle, // 0x1D
PeepSpriteType::ToffeeApple, // 0x1E
PeepSpriteType::Doughnut, // 0x1F
PeepSpriteType::Coffee, // 0x20
PeepSpriteType::Chicken, // 0x21
PeepSpriteType::Lemonade, // 0x22
};
if (rct1SpriteType >= std::size(map))
{
log_warning("Unsupported RCT1 peep sprite type: %d.", rct1SpriteType);
return PeepSpriteType::Normal;
}
return map[rct1SpriteType];
}
std::string_view GetTerrainSurfaceObject(uint8_t terrainSurface)
{
static constexpr std::string_view map[RCT1_NUM_TERRAIN_SURFACES] =
{
"rct2.terrain_surface.grass",
"rct2.terrain_surface.sand",
"rct2.terrain_surface.dirt",
"rct2.terrain_surface.rock",
"rct2.terrain_surface.martian",
"rct2.terrain_surface.chequerboard",
"rct2.terrain_surface.grass_clumps",
"rct1aa.terrain_surface.roof_red",
"rct2.terrain_surface.ice",
"rct1ll.terrain_surface.wood",
"rct1ll.terrain_surface.rust",
"rct1ll.terrain_surface.roof_grey",
"rct2.terrain_surface.grid_red",
"rct2.terrain_surface.grid_yellow",
"rct2.terrain_surface.grid_purple",
"rct2.terrain_surface.grid_green",
};
return terrainSurface < std::size(map) ? map[terrainSurface] : map[0];
}
std::string_view GetTerrainEdgeObject(uint8_t terrainEdge)
{
static constexpr std::string_view map[RCT1_NUM_TERRAIN_EDGES] =
{
"rct2.terrain_edge.rock",
"rct1.terrain_edge.brick",
"rct1.terrain_edge.iron",
"rct2.terrain_edge.wood_red",
"rct1aa.terrain_edge.grey",
"rct1aa.terrain_edge.yellow",
"rct2.terrain_edge.wood_black",
"rct1aa.terrain_edge.red",
"rct2.terrain_edge.ice",
"rct1ll.terrain_edge.purple",
"rct1ll.terrain_edge.green",
"rct1ll.terrain_edge.stone_brown",
"rct1ll.terrain_edge.stone_grey",
"rct1ll.terrain_edge.skyscraper_a",
"rct1ll.terrain_edge.skyscraper_b",
};
return terrainEdge < std::size(map) ? map[terrainEdge] : map[0];
}
uint8_t GetRideType(RideType rideType, uint8_t vehicleType)
{
if (rideType == RideType::SteelTwisterRollerCoaster && vehicleType == RCT1_VEHICLE_TYPE_NON_LOOPING_STEEL_TWISTER_ROLLER_COASTER_TRAIN)
return RIDE_TYPE_HYPER_TWISTER;
if (rideType == RideType::SteelCorkscrewRollerCoaster && vehicleType == RCT1_VEHICLE_TYPE_HYPERCOASTER_TRAIN)
return RIDE_TYPE_HYPERCOASTER;
static uint8_t map[] =
{
RIDE_TYPE_WOODEN_ROLLER_COASTER, // RCT1_RIDE_TYPE_WOODEN_ROLLER_COASTER
RIDE_TYPE_STAND_UP_ROLLER_COASTER, // RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER
RIDE_TYPE_SUSPENDED_SWINGING_COASTER, // RCT1_RIDE_TYPE_SUSPENDED_ROLLER_COASTER
RIDE_TYPE_INVERTED_ROLLER_COASTER, // RCT1_RIDE_TYPE_INVERTED_ROLLER_COASTER
RIDE_TYPE_CLASSIC_MINI_ROLLER_COASTER, // RCT1_RIDE_TYPE_STEEL_MINI_ROLLER_COASTER
RIDE_TYPE_MINIATURE_RAILWAY, // RCT1_RIDE_TYPE_MINIATURE_RAILWAY
RIDE_TYPE_MONORAIL, // RCT1_RIDE_TYPE_MONORAIL
RIDE_TYPE_MINI_SUSPENDED_COASTER, // RCT1_RIDE_TYPE_SUSPENDED_SINGLE_RAIL_ROLLER_COASTER
RIDE_TYPE_BOAT_HIRE, // RCT1_RIDE_TYPE_BOAT_HIRE
RIDE_TYPE_WOODEN_WILD_MOUSE, // RCT1_RIDE_TYPE_WOODEN_CRAZY_RODENT_ROLLER_COASTER
RIDE_TYPE_STEEPLECHASE, // RCT1_RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER
RIDE_TYPE_CAR_RIDE, // RCT1_RIDE_TYPE_CAR_RIDE
RIDE_TYPE_LAUNCHED_FREEFALL, // RCT1_RIDE_TYPE_LAUNCHED_FREEFALL
RIDE_TYPE_BOBSLEIGH_COASTER, // RCT1_RIDE_TYPE_BOBSLED_ROLLER_COASTER
RIDE_TYPE_OBSERVATION_TOWER, // RCT1_RIDE_TYPE_OBSERVATION_TOWER
RIDE_TYPE_LOOPING_ROLLER_COASTER, // RCT1_RIDE_TYPE_STEEL_ROLLER_COASTER
RIDE_TYPE_DINGHY_SLIDE, // RCT1_RIDE_TYPE_WATER_SLIDE
RIDE_TYPE_MINE_TRAIN_COASTER, // RCT1_RIDE_TYPE_MINE_TRAIN_ROLLER_COASTER
RIDE_TYPE_CHAIRLIFT, // RCT1_RIDE_TYPE_CHAIRLIFT
RIDE_TYPE_CORKSCREW_ROLLER_COASTER, // RCT1_RIDE_TYPE_STEEL_CORKSCREW_ROLLER_COASTER
RIDE_TYPE_MAZE, // RCT1_RIDE_TYPE_HEDGE_MAZE
RIDE_TYPE_SPIRAL_SLIDE, // RCT1_RIDE_TYPE_SPIRAL_SLIDE
RIDE_TYPE_GO_KARTS, // RCT1_RIDE_TYPE_GO_KARTS
RIDE_TYPE_LOG_FLUME, // RCT1_RIDE_TYPE_LOG_FLUME
RIDE_TYPE_RIVER_RAPIDS, // RCT1_RIDE_TYPE_RIVER_RAPIDS
RIDE_TYPE_DODGEMS, // RCT1_RIDE_TYPE_DODGEMS
RIDE_TYPE_SWINGING_SHIP, // RCT1_RIDE_TYPE_SWINGING_SHIP
RIDE_TYPE_SWINGING_INVERTER_SHIP, // RCT1_RIDE_TYPE_SWINGING_INVERTER_SHIP
RIDE_TYPE_FOOD_STALL, // RCT1_RIDE_TYPE_ICE_CREAM_STALL
RIDE_TYPE_FOOD_STALL, // RCT1_RIDE_TYPE_CHIPS_STALL
RIDE_TYPE_DRINK_STALL, // RCT1_RIDE_TYPE_DRINK_STALL
RIDE_TYPE_FOOD_STALL, // RCT1_RIDE_TYPE_CANDYFLOSS_STALL
RIDE_TYPE_SHOP, // RCT1_RIDE_TYPE_BURGER_BAR
RIDE_TYPE_MERRY_GO_ROUND, // RCT1_RIDE_TYPE_MERRY_GO_ROUND
RIDE_TYPE_SHOP, // RCT1_RIDE_TYPE_BALLOON_STALL
RIDE_TYPE_INFORMATION_KIOSK, // RCT1_RIDE_TYPE_INFORMATION_KIOSK
RIDE_TYPE_TOILETS, // RCT1_RIDE_TYPE_TOILETS
RIDE_TYPE_FERRIS_WHEEL, // RCT1_RIDE_TYPE_FERRIS_WHEEL
RIDE_TYPE_MOTION_SIMULATOR, // RCT1_RIDE_TYPE_MOTION_SIMULATOR
RIDE_TYPE_3D_CINEMA, // RCT1_RIDE_TYPE_3D_CINEMA
RIDE_TYPE_TOP_SPIN, // RCT1_RIDE_TYPE_TOP_SPIN
RIDE_TYPE_SPACE_RINGS, // RCT1_RIDE_TYPE_SPACE_RINGS
RIDE_TYPE_REVERSE_FREEFALL_COASTER, // RCT1_RIDE_TYPE_REVERSE_FREEFALL_ROLLER_COASTER
RIDE_TYPE_SHOP, // RCT1_RIDE_TYPE_SOUVENIR_STALL
RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER, // RCT1_RIDE_TYPE_VERTICAL_ROLLER_COASTER
RIDE_TYPE_FOOD_STALL, // RCT1_RIDE_TYPE_PIZZA_STALL
RIDE_TYPE_TWIST, // RCT1_RIDE_TYPE_TWIST
RIDE_TYPE_HAUNTED_HOUSE, // RCT1_RIDE_TYPE_HAUNTED_HOUSE
RIDE_TYPE_FOOD_STALL, // RCT1_RIDE_TYPE_POPCORN_STALL
RIDE_TYPE_CIRCUS, // RCT1_RIDE_TYPE_CIRCUS
RIDE_TYPE_GHOST_TRAIN, // RCT1_RIDE_TYPE_GHOST_TRAIN
RIDE_TYPE_TWISTER_ROLLER_COASTER, // RCT1_RIDE_TYPE_STEEL_TWISTER_ROLLER_COASTER
RIDE_TYPE_WOODEN_ROLLER_COASTER, // RCT1_RIDE_TYPE_WOODEN_TWISTER_ROLLER_COASTER
RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER, // RCT1_RIDE_TYPE_WOODEN_SIDE_FRICTION_ROLLER_COASTER
RIDE_TYPE_STEEL_WILD_MOUSE, // RCT1_RIDE_TYPE_STEEL_WILD_MOUSE_ROLLER_COASTER
RIDE_TYPE_FOOD_STALL, // RCT1_RIDE_TYPE_HOT_DOG_STALL
RIDE_TYPE_FOOD_STALL, // RCT1_RIDE_TYPE_EXOTIC_SEA_FOOD_STALL
RIDE_TYPE_SHOP, // RCT1_RIDE_TYPE_HAT_STALL
RIDE_TYPE_FOOD_STALL, // RCT1_RIDE_TYPE_TOFFEE_APPLE_STALL
RIDE_TYPE_VIRGINIA_REEL, // RCT1_RIDE_TYPE_VIRGINIA_REEL
RIDE_TYPE_SPLASH_BOATS, // RCT1_RIDE_TYPE_RIVER_RIDE
RIDE_TYPE_MINI_HELICOPTERS, // RCT1_RIDE_TYPE_CYCLE_MONORAIL
RIDE_TYPE_LAY_DOWN_ROLLER_COASTER, // RCT1_RIDE_TYPE_FLYING_ROLLER_COASTER
RIDE_TYPE_SUSPENDED_MONORAIL, // RCT1_RIDE_TYPE_SUSPENDED_MONORAIL
RIDE_TYPE_NULL, // RCT1_RIDE_TYPE_40
RIDE_TYPE_REVERSER_ROLLER_COASTER, // RCT1_RIDE_TYPE_WOODEN_REVERSER_ROLLER_COASTER
RIDE_TYPE_HEARTLINE_TWISTER_COASTER, // RCT1_RIDE_TYPE_HEARTLINE_TWISTER_ROLLER_COASTER
RIDE_TYPE_MINI_GOLF, // RCT1_RIDE_TYPE_MINIATURE_GOLF
RIDE_TYPE_NULL, // RCT1_RIDE_TYPE_44
RIDE_TYPE_ROTO_DROP, // RCT1_RIDE_TYPE_ROTO_DROP
RIDE_TYPE_FLYING_SAUCERS, // RCT1_RIDE_TYPE_FLYING_SAUCERS
RIDE_TYPE_CROOKED_HOUSE, // RCT1_RIDE_TYPE_CROOKED_HOUSE
RIDE_TYPE_MONORAIL_CYCLES, // RCT1_RIDE_TYPE_CYCLE_RAILWAY
RIDE_TYPE_COMPACT_INVERTED_COASTER, // RCT1_RIDE_TYPE_SUSPENDED_LOOPING_ROLLER_COASTER
RIDE_TYPE_WATER_COASTER, // RCT1_RIDE_TYPE_WATER_COASTER
RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER, // RCT1_RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER
RIDE_TYPE_INVERTED_HAIRPIN_COASTER, // RCT1_RIDE_TYPE_INVERTED_WILD_MOUSE_COASTER
RIDE_TYPE_BOAT_HIRE, // RCT1_RIDE_TYPE_JET_SKIS
RIDE_TYPE_SHOP, // RCT1_RIDE_TYPE_T_SHIRT_STALL
RIDE_TYPE_RIVER_RAFTS, // RCT1_RIDE_TYPE_RAFT_RIDE
RIDE_TYPE_FOOD_STALL, // RCT1_RIDE_TYPE_DOUGHNUT_SHOP
RIDE_TYPE_ENTERPRISE, // RCT1_RIDE_TYPE_ENTERPRISE
RIDE_TYPE_DRINK_STALL, // RCT1_RIDE_TYPE_COFFEE_SHOP
RIDE_TYPE_FOOD_STALL, // RCT1_RIDE_TYPE_FRIED_CHICKEN_STALL
RIDE_TYPE_DRINK_STALL, // RCT1_RIDE_TYPE_LEMONADE_STALL
};
const auto index = EnumValue(rideType);
Guard::ArgumentInRange<size_t>(index, 0, std::size(map), "Unsupported RCT1 ride type.");
return map[index];
}
VehicleColourSchemeCopyDescriptor GetColourSchemeCopyDescriptor(uint8_t vehicleType)
{
static VehicleColourSchemeCopyDescriptor map[89] =
{
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN = 0,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN_BACKWARDS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_INVERTED_COASTER_TRAIN, // Not in RCT2
{ COPY_COLOUR_1, COPY_COLOUR_2, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_LADYBIRD_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_1, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_STANDUP_ROLLER_COASTER_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SPINNING_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SINGLE_PERSON_SWINGING_CHAIRS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SWANS_PEDAL_BOATS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_DARK_BLUE }, // RCT1_VEHICLE_TYPE_LARGE_MONORAIL_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_CANOES,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_ROWING_BOATS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_STEAM_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_WOODEN_MOUSE_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_BUMPER_BOATS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN_BACKWARDS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_ROCKET_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_HORSES, // Steeplechase
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SPORTSCARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_LYING_DOWN_SWINGING_CARS, // Inverted single-rail
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_WOODEN_MINE_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_AIRPLANE_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SMALL_MONORAIL_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_WATER_TRICYCLES,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_LAUNCHED_FREEFALL_CAR,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_BOBSLEIGH_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_DINGHIES,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_ROTATING_CABIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_MINE_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_CHAIRLIFT_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_CORKSCREW_ROLLER_COASTER_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_MOTORBIKES,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_RACING_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_TRUCKS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_GO_KARTS,
{ COPY_COLOUR_1, COLOUR_BLACK, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_RAPIDS_BOATS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_LOG_FLUME_BOATS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_DODGEMS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SWINGING_SHIP,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SWINGING_INVERTER_SHIP,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_MERRY_GO_ROUND,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_FERRIS_WHEEL,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SIMULATOR_POD,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_CINEMA_BUILDING,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_TOPSPIN_CAR,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SPACE_RINGS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_REVERSE_FREEFALL_ROLLER_COASTER_CAR,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_VERTICAL_ROLLER_COASTER_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_CAT_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_TWIST_ARMS_AND_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_HAUNTED_HOUSE_BUILDING,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_LOG_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_CIRCUS_TENT,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_GHOST_TRAIN_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_WOODEN_TWISTER_ROLLER_COASTER_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_WOODEN_SIDE_FRICTION_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_1, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_VINTAGE_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_STEAM_TRAIN_COVERED_CARS,
{ COPY_COLOUR_1, COLOUR_BLACK, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_STAND_UP_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_FLOORLESS_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_STEEL_MOUSE_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_CHAIRLIFT_CARS_ALTERNATIVE,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SUSPENDED_MONORAIL_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_HELICOPTER_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_VIRGINIA_REEL_TUBS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_REVERSER_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_GOLFERS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_RIVER_RIDE_BOATS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_FLYING_ROLLER_COASTER_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_NON_LOOPING_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS_REVERSED,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_RESERVED,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_ROTODROP_CAR,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_FLYING_SAUCERS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_CROOKED_HOUSE_BUILDING,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_BICYCLES,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_HYPERCOASTER_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_4_ACROSS_INVERTED_COASTER_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_WATER_COASTER_BOATS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_FACEOFF_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_JET_SKIS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_RAFT_BOATS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_YELLOW }, // RCT1_VEHICLE_TYPE_AMERICAN_STYLE_STEAM_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_AIR_POWERED_COASTER_TRAIN,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SUSPENDED_WILD_MOUSE_CARS, // Inverted Hairpin in RCT2
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_ENTERPRISE_WHEEL
};
Guard::ArgumentInRange<size_t>(vehicleType, 0, std::size(map), "Unsupported RCT1 vehicle type.");
return map[vehicleType];
}
bool RideTypeUsesVehicles(RideType rideType)
{
switch (rideType) {
case RideType::HedgeMaze:
case RideType::SpiralSlide:
case RideType::IceCreamStall:
case RideType::ChipsStall:
case RideType::DrinkStall:
case RideType::CandyflossStall:
case RideType::BurgerBar:
case RideType::BalloonStall:
case RideType::InformationKiosk:
case RideType::Toilets:
case RideType::SouvenirStall:
case RideType::PizzaStall:
case RideType::PopcornStall:
case RideType::HotDogStall:
case RideType::ExoticSeaFoodStall:
case RideType::HatStall:
case RideType::ToffeeAppleStall:
case RideType::_40:
case RideType::_44:
case RideType::TShirtStall:
case RideType::DoughnutShop:
case RideType::CoffeeShop:
case RideType::FriedChickenStall:
case RideType::LemonadeStall:
return false;
default:
return true;
}
}
bool PathIsQueue(uint8_t pathType)
{
switch (pathType) {
case RCT1_FOOTPATH_TYPE_QUEUE_BLUE:
case RCT1_FOOTPATH_TYPE_QUEUE_RED:
case RCT1_FOOTPATH_TYPE_QUEUE_YELLOW:
case RCT1_FOOTPATH_TYPE_QUEUE_GREEN:
return true;
}
return false;
}
uint8_t NormalisePathAddition(uint8_t pathAdditionType)
{
switch (pathAdditionType) {
case RCT1_PATH_ADDITION_BROKEN_LAMP_1: return RCT1_PATH_ADDITION_LAMP_1;
case RCT1_PATH_ADDITION_BROKEN_LAMP_2: return RCT1_PATH_ADDITION_LAMP_2;
case RCT1_PATH_ADDITION_BROKEN_BIN: return RCT1_PATH_ADDITION_BIN;
case RCT1_PATH_ADDITION_BROKEN_BENCH: return RCT1_PATH_ADDITION_BENCH;
case RCT1_PATH_ADDITION_BROKEN_LAMP_3: return RCT1_PATH_ADDITION_LAMP_3;
case RCT1_PATH_ADDITION_BROKEN_LAMP_4: return RCT1_PATH_ADDITION_LAMP_4;
}
return pathAdditionType;
}
uint8_t GetVehicleSubEntryIndex(uint8_t vehicleSubEntry)
{
static constexpr const uint8_t map[] =
{
0, // STEEL_RC_FRONT
1, // STEEL_RC_CARRIAGE
0,
0,
0,
0,
0,
0,
0,
0,
0, // MONORAIL_CARRIAGE
1, // MONORAIL_FRONT
2, // MONORAIL_BACK
0,
0,
1, // MINIATURE_RAILWAY_TENDER
0, // MINIATURE_RAILWAY_LOCOMOTIVE
2, // MINIATURE_RAILWAY_CARRIAGE
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0, // MINE_TRAIN_FRONT
1, // MINE_TRAIN_CARRIAGE
0,
0, // CORKSCREW_RC_FRONT
1, // CORKSCREW_RC_CARRIAGE
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0, // GHOST_TRAIN_CAR
1, // TWISTER_RC_SPOILER
0, // TWISTER_RC_CARRIAGE
1, // GHOST_TRAIN_INVISIBLE
0, // ARTICULATED_RC_FRONT
1, // ARTICULATED_RC_CARRIAGE
0,
0,
2, // MINIATURE_RAILWAY_CARRIAGE_COVERED
0, // STANDUP_TWISTER_RC_CARRIAGE
0,
0,
0,
0,
0,
0,
0, // REVERSER_RC_CAR
2, // REVERSER_RC_BOGIE
1, // MINIGOLF_PLAYER
0, // MINIGOLF_BALL
0, // SPLASH_BOAT
1, // SPLASH_BOAT_INVISIBLE
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0, // HYPERCOASTER_FRONT
1, // HYPERCOASTER_CARRIAGE
0, // INVERTED_4_ACROSS_CARRIAGE
0, // WATER_COASTER_BOAT
0,
1, // WATER_COASTER_INVISIBLE
0,
0, // RIVER_RAFT
1, // MINIATURE_RAILWAY_AMERICAN_TENDER
0, // MINIATURE_RAILWAY_AMERICAN_LOCOMOTIVE
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
};
return map[vehicleSubEntry];
}
std::string_view GetRideTypeObject(RideType rideType)
{
static constexpr const char * map[] =
{
"rct2.ride.ptct1", // RCT1_RIDE_TYPE_WOODEN_ROLLER_COASTER
"rct2.ride.togst", // RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER
"rct2.ride.arrsw1", // RCT1_RIDE_TYPE_SUSPENDED_ROLLER_COASTER
"rct2.ride.nemt", // RCT1_RIDE_TYPE_INVERTED_ROLLER_COASTER
"rct2.ride.zldb", // RCT1_RIDE_TYPE_STEEL_MINI_ROLLER_COASTER
"rct2.ride.nrl", // RCT1_RIDE_TYPE_MINIATURE_RAILWAY
"rct2.ride.mono2", // RCT1_RIDE_TYPE_MONORAIL
"rct2.ride.batfl", // RCT1_RIDE_TYPE_SUSPENDED_SINGLE_RAIL_ROLLER_COASTER
"rct2.ride.rboat", // RCT1_RIDE_TYPE_BOAT_HIRE
"rct2.ride.wmouse", // RCT1_RIDE_TYPE_WOODEN_CRAZY_RODENT_ROLLER_COASTER
"rct2.ride.steep1", // RCT1_RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER
"rct2.ride.spcar", // RCT1_RIDE_TYPE_CAR_RIDE
"rct2.ride.ssc1", // RCT1_RIDE_TYPE_LAUNCHED_FREEFALL
"rct2.ride.bob1", // RCT1_RIDE_TYPE_BOBSLED_ROLLER_COASTER
"rct2.ride.obs1", // RCT1_RIDE_TYPE_OBSERVATION_TOWER
"rct2.ride.scht1", // RCT1_RIDE_TYPE_STEEL_ROLLER_COASTER
"rct2.ride.ding1", // RCT1_RIDE_TYPE_WATER_SLIDE
"rct2.ride.amt1", // RCT1_RIDE_TYPE_MINE_TRAIN_ROLLER_COASTER
"rct2.ride.clift1", // RCT1_RIDE_TYPE_CHAIRLIFT
"rct2.ride.arrt1", // RCT1_RIDE_TYPE_STEEL_CORKSCREW_ROLLER_COASTER
"rct2.ride.hmaze", // RCT1_RIDE_TYPE_HEDGE_MAZE
"rct2.ride.hskelt", // RCT1_RIDE_TYPE_SPIRAL_SLIDE
"rct2.ride.kart1", // RCT1_RIDE_TYPE_GO_KARTS
"rct2.ride.lfb1", // RCT1_RIDE_TYPE_LOG_FLUME
"rct2.ride.rapboat", // RCT1_RIDE_TYPE_RIVER_RAPIDS
"rct2.ride.dodg1", // RCT1_RIDE_TYPE_DODGEMS
"rct2.ride.swsh1", // RCT1_RIDE_TYPE_SWINGING_SHIP
"rct2.ride.swsh2", // RCT1_RIDE_TYPE_SWINGING_INVERTER_SHIP
"rct2.ride.icecr1", // RCT1_RIDE_TYPE_ICE_CREAM_STALL
"rct2.ride.chpsh", // RCT1_RIDE_TYPE_CHIPS_STALL
"rct2.ride.drnks", // RCT1_RIDE_TYPE_DRINK_STALL
"rct2.ride.cndyf", // RCT1_RIDE_TYPE_CANDYFLOSS_STALL
"rct2.ride.burgb", // RCT1_RIDE_TYPE_BURGER_BAR
"rct2.ride.mgr1", // RCT1_RIDE_TYPE_MERRY_GO_ROUND
"rct2.ride.balln", // RCT1_RIDE_TYPE_BALLOON_STALL
"rct2.ride.infok", // RCT1_RIDE_TYPE_INFORMATION_KIOSK
"rct1.ride.toilets", // RCT1_RIDE_TYPE_TOILETS
"rct2.ride.fwh1", // RCT1_RIDE_TYPE_FERRIS_WHEEL
"rct2.ride.simpod", // RCT1_RIDE_TYPE_MOTION_SIMULATOR
"rct2.ride.c3d", // RCT1_RIDE_TYPE_3D_CINEMA
"rct2.ride.topsp1", // RCT1_RIDE_TYPE_TOP_SPIN
"rct2.ride.srings", // RCT1_RIDE_TYPE_SPACE_RINGS
"rct2.ride.revf1", // RCT1_RIDE_TYPE_REVERSE_FREEFALL_ROLLER_COASTER
"rct2.ride.souvs", // RCT1_RIDE_TYPE_SOUVENIR_STALL
"rct2.ride.bmvd", // RCT1_RIDE_TYPE_VERTICAL_ROLLER_COASTER
"rct2.ride.pizzs", // RCT1_RIDE_TYPE_PIZZA_STALL
"rct2.ride.twist1", // RCT1_RIDE_TYPE_TWIST
"rct2.ride.hhbuild", // RCT1_RIDE_TYPE_HAUNTED_HOUSE
"rct2.ride.popcs", // RCT1_RIDE_TYPE_POPCORN_STALL
"rct2.ride.circus1", // RCT1_RIDE_TYPE_CIRCUS
"rct2.ride.gtc", // RCT1_RIDE_TYPE_GHOST_TRAIN
"rct2.ride.bmsd", // RCT1_RIDE_TYPE_STEEL_TWISTER_ROLLER_COASTER
"rct2.ride.mft", // RCT1_RIDE_TYPE_WOODEN_TWISTER_ROLLER_COASTER
"rct2.ride.sfric1", // RCT1_RIDE_TYPE_WOODEN_SIDE_FRICTION_ROLLER_COASTER
"rct2.ride.smc1", // RCT1_RIDE_TYPE_STEEL_WILD_MOUSE_ROLLER_COASTER
"rct2.ride.hotds", // RCT1_RIDE_TYPE_HOT_DOG_STALL
"rct2.ride.sqdst", // RCT1_RIDE_TYPE_EXOTIC_SEA_FOOD_STALL
"rct2.ride.hatst", // RCT1_RIDE_TYPE_HAT_STALL
"rct2.ride.toffs", // RCT1_RIDE_TYPE_TOFFEE_APPLE_STALL
"rct2.ride.vreel", // RCT1_RIDE_TYPE_VIRGINIA_REEL
"rct2.ride.spboat", // RCT1_RIDE_TYPE_RIVER_RIDE
"rct2.ride.monbk", // RCT1_RIDE_TYPE_CYCLE_MONORAIL
"rct2.ride.vekst", // RCT1_RIDE_TYPE_FLYING_ROLLER_COASTER
"rct2.ride.smono", // RCT1_RIDE_TYPE_SUSPENDED_MONORAIL
"", // RCT1_RIDE_TYPE_40
"rct2.ride.revcar", // RCT1_RIDE_TYPE_WOODEN_REVERSER_ROLLER_COASTER
"rct2.ride.utcar", // RCT1_RIDE_TYPE_HEARTLINE_TWISTER_ROLLER_COASTER
"rct2.ride.golf1", // RCT1_RIDE_TYPE_MINIATURE_GOLF
"", // RCT1_RIDE_TYPE_44
"rct2.ride.gdrop1", // RCT1_RIDE_TYPE_ROTO_DROP
"rct2.ride.fsauc", // RCT1_RIDE_TYPE_FLYING_SAUCERS
"rct2.ride.chbuild", // RCT1_RIDE_TYPE_CROOKED_HOUSE
"rct2.ride.helicar", // RCT1_RIDE_TYPE_CYCLE_RAILWAY
"rct2.ride.slct", // RCT1_RIDE_TYPE_SUSPENDED_LOOPING_ROLLER_COASTER
"rct2.ride.cstboat", // RCT1_RIDE_TYPE_WATER_COASTER
"rct2.ride.thcar", // RCT1_RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER
"rct2.ride.ivmc1", // RCT1_RIDE_TYPE_INVERTED_WILD_MOUSE_COASTER
"rct2.ride.jski", // RCT1_RIDE_TYPE_JET_SKIS
"rct2.ride.tshrt", // RCT1_RIDE_TYPE_T_SHIRT_STALL
"rct2.ride.rftboat", // RCT1_RIDE_TYPE_RAFT_RIDE
"rct2.ride.dough", // RCT1_RIDE_TYPE_DOUGHNUT_SHOP
"rct2.ride.enterp", // RCT1_RIDE_TYPE_ENTERPRISE
"rct2.ride.coffs", // RCT1_RIDE_TYPE_COFFEE_SHOP
"rct2.ride.chcks", // RCT1_RIDE_TYPE_FRIED_CHICKEN_STALL
"rct2.ride.lemst", // RCT1_RIDE_TYPE_LEMONADE_STALL
};
const auto index = EnumValue(rideType);
Guard::ArgumentInRange<size_t>(index, 0, std::size(map), "Unsupported RCT1 ride type.");
return map[index];
}
std::string_view GetVehicleObject(uint8_t vehicleType)
{
static constexpr const char * map[] =
{
"rct2.ride.scht1", // RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN
"rct2.ride.scht1", // RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN_BACKWARDS
"rct2.ride.ptct1", // RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN
"rct2.ride.slct", // RCT1_VEHICLE_TYPE_INVERTED_COASTER_TRAIN (Not in RCT2)
"rct2.ride.arrsw1", // RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_CARS
"rct2.ride.zldb", // RCT1_VEHICLE_TYPE_LADYBIRD_CARS
"rct2.ride.togst", // RCT1_VEHICLE_TYPE_STANDUP_ROLLER_COASTER_CARS
"rct2.ride.wmspin", // RCT1_VEHICLE_TYPE_SPINNING_CARS
"rct2.ride.batfl", // RCT1_VEHICLE_TYPE_SINGLE_PERSON_SWINGING_CHAIRS
"rct2.ride.swans", // RCT1_VEHICLE_TYPE_SWANS_PEDAL_BOATS
"rct2.ride.mono1", // RCT1_VEHICLE_TYPE_LARGE_MONORAIL_TRAIN
"rct2.ride.cboat", // RCT1_VEHICLE_TYPE_CANOES
"rct2.ride.rboat", // RCT1_VEHICLE_TYPE_ROWING_BOATS
"rct2.ride.nrl", // RCT1_VEHICLE_TYPE_STEAM_TRAIN
"rct2.ride.wmouse", // RCT1_VEHICLE_TYPE_WOODEN_MOUSE_CARS
"rct2.ride.bboat", // RCT1_VEHICLE_TYPE_BUMPER_BOATS
"rct2.ride.ptct1", // RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN_BACKWARDS
"rct2.ride.rckc", // RCT1_VEHICLE_TYPE_ROCKET_CARS
"rct2.ride.steep1", // RCT1_VEHICLE_TYPE_HORSES // Steeplechase
"rct2.ride.spcar", // RCT1_VEHICLE_TYPE_SPORTSCARS
"rct2.ride.skytr", // RCT1_VEHICLE_TYPE_LYING_DOWN_SWINGING_CARS (Inverted single-rail)
"rct2.ride.wmmine", // RCT1_VEHICLE_TYPE_WOODEN_MINE_CARS
"rct2.ride.arrsw2", // RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_AIRPLANE_CARS
"rct2.ride.mono2", // RCT1_VEHICLE_TYPE_SMALL_MONORAIL_CARS
"rct2.ride.trike", // RCT1_VEHICLE_TYPE_WATER_TRICYCLES
"rct2.ride.ssc1", // RCT1_VEHICLE_TYPE_LAUNCHED_FREEFALL_CAR
"rct2.ride.bob1", // RCT1_VEHICLE_TYPE_BOBSLEIGH_CARS
"rct2.ride.ding1", // RCT1_VEHICLE_TYPE_DINGHIES
"rct2.ride.obs1", // RCT1_VEHICLE_TYPE_ROTATING_CABIN
"rct2.ride.amt1", // RCT1_VEHICLE_TYPE_MINE_TRAIN
"rct2.ride.clift1", // RCT1_VEHICLE_TYPE_CHAIRLIFT_CARS
"rct2.ride.arrt1", // RCT1_VEHICLE_TYPE_CORKSCREW_ROLLER_COASTER_TRAIN
"rct2.ride.steep2", // RCT1_VEHICLE_TYPE_MOTORBIKES
"rct2.ride.rcr", // RCT1_VEHICLE_TYPE_RACING_CARS
"rct2.ride.truck1", // RCT1_VEHICLE_TYPE_TRUCKS
"rct2.ride.kart1", // RCT1_VEHICLE_TYPE_GO_KARTS
"rct2.ride.rapboat", // RCT1_VEHICLE_TYPE_RAPIDS_BOATS
"rct2.ride.lfb1", // RCT1_VEHICLE_TYPE_LOG_FLUME_BOATS
"rct2.ride.dodg1", // RCT1_VEHICLE_TYPE_DODGEMS
"rct2.ride.swsh1", // RCT1_VEHICLE_TYPE_SWINGING_SHIP
"rct2.ride.swsh2", // RCT1_VEHICLE_TYPE_SWINGING_INVERTER_SHIP
"rct2.ride.mgr1", // RCT1_VEHICLE_TYPE_MERRY_GO_ROUND
"rct2.ride.fwh1", // RCT1_VEHICLE_TYPE_FERRIS_WHEEL
"rct2.ride.simpod", // RCT1_VEHICLE_TYPE_SIMULATOR_POD
"rct2.ride.c3d", // RCT1_VEHICLE_TYPE_CINEMA_BUILDING
"rct2.ride.topsp1", // RCT1_VEHICLE_TYPE_TOPSPIN_CAR
"rct2.ride.srings", // RCT1_VEHICLE_TYPE_SPACE_RINGS
"rct2.ride.revf1", // RCT1_VEHICLE_TYPE_REVERSE_FREEFALL_ROLLER_COASTER_CAR
"rct2.ride.bmvd", // RCT1_VEHICLE_TYPE_VERTICAL_ROLLER_COASTER_CARS
"rct2.ride.ctcar", // RCT1_VEHICLE_TYPE_CAT_CARS
"rct2.ride.twist1", // RCT1_VEHICLE_TYPE_TWIST_ARMS_AND_CARS
"rct2.ride.hhbuild", // RCT1_VEHICLE_TYPE_HAUNTED_HOUSE_BUILDING
"rct2.ride.zlog", // RCT1_VEHICLE_TYPE_LOG_CARS
"rct2.ride.circus1", // RCT1_VEHICLE_TYPE_CIRCUS_TENT
"rct2.ride.gtc", // RCT1_VEHICLE_TYPE_GHOST_TRAIN_CARS
"rct2.ride.bmsd", // RCT1_VEHICLE_TYPE_STEEL_TWISTER_ROLLER_COASTER_TRAIN
"rct2.ride.mft", // RCT1_VEHICLE_TYPE_WOODEN_TWISTER_ROLLER_COASTER_TRAIN
"rct2.ride.sfric1", // RCT1_VEHICLE_TYPE_WOODEN_SIDE_FRICTION_CARS
"rct2.ride.vcr", // RCT1_VEHICLE_TYPE_VINTAGE_CARS
"rct2.ride.nrl2", // RCT1_VEHICLE_TYPE_STEAM_TRAIN_COVERED_CARS
"rct2.ride.bmsu", // RCT1_VEHICLE_TYPE_STAND_UP_STEEL_TWISTER_ROLLER_COASTER_TRAIN
"rct2.ride.bmfl", // RCT1_VEHICLE_TYPE_FLOORLESS_STEEL_TWISTER_ROLLER_COASTER_TRAIN
"rct2.ride.smc1", // RCT1_VEHICLE_TYPE_STEEL_MOUSE_CARS
"rct2.ride.clift2", // RCT1_VEHICLE_TYPE_CHAIRLIFT_CARS_ALTERNATIVE
"rct2.ride.smono", // RCT1_VEHICLE_TYPE_SUSPENDED_MONORAIL_TRAIN
"rct2.ride.helicar", // RCT1_VEHICLE_TYPE_HELICOPTER_CARS
"rct2.ride.vreel", // RCT1_VEHICLE_TYPE_VIRGINIA_REEL_TUBS
"rct2.ride.revcar", // RCT1_VEHICLE_TYPE_REVERSER_CARS
"rct2.ride.golf1", // RCT1_VEHICLE_TYPE_GOLFERS
"rct2.ride.spboat", // RCT1_VEHICLE_TYPE_RIVER_RIDE_BOATS
"rct2.ride.vekst", // RCT1_VEHICLE_TYPE_FLYING_ROLLER_COASTER_TRAIN
"rct2.ride.bmrb", // RCT1_VEHICLE_TYPE_NON_LOOPING_STEEL_TWISTER_ROLLER_COASTER_TRAIN
"rct2.ride.utcar", // RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS
"rct2.ride.utcarr", // RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS_REVERSED
"", // RCT1_VEHICLE_TYPE_RESERVED
"rct2.ride.gdrop1", // RCT1_VEHICLE_TYPE_ROTODROP_CAR
"rct2.ride.fsauc", // RCT1_VEHICLE_TYPE_FLYING_SAUCERS
"rct2.ride.chbuild", // RCT1_VEHICLE_TYPE_CROOKED_HOUSE_BUILDING
"rct2.ride.monbk", // RCT1_VEHICLE_TYPE_BICYCLES
"rct2.ride.arrt2", // RCT1_VEHICLE_TYPE_HYPERCOASTER_TRAIN
"rct2.ride.nemt", // RCT1_VEHICLE_TYPE_4_ACROSS_INVERTED_COASTER_TRAIN
"rct2.ride.cstboat", // RCT1_VEHICLE_TYPE_WATER_COASTER_BOATS
"rct2.ride.slcfo", // RCT1_VEHICLE_TYPE_FACEOFF_CARS
"rct2.ride.jski", // RCT1_VEHICLE_TYPE_JET_SKIS
"rct2.ride.rftboat", // RCT1_VEHICLE_TYPE_RAFT_BOATS
"rct2.ride.aml1", // RCT1_VEHICLE_TYPE_AMERICAN_STYLE_STEAM_TRAIN
"rct2.ride.thcar", // RCT1_VEHICLE_TYPE_AIR_POWERED_COASTER_TRAIN
"rct2.ride.ivmc1", // RCT1_VEHICLE_TYPE_SUSPENDED_WILD_MOUSE_CARS (Inverted Hairpin in RCT2)
"rct2.ride.enterp", // RCT1_VEHICLE_TYPE_ENTERPRISE_WHEEL
};
Guard::ArgumentInRange<size_t>(vehicleType, 0, std::size(map), "Unsupported RCT1 vehicle type.");
return map[vehicleType];
}
std::string_view GetSmallSceneryObject(uint8_t smallSceneryType)
{
static constexpr const char * map[] =
{
"rct2.scenery_small.tl0",
"rct2.scenery_small.tl1",
"rct2.scenery_small.tl2",
"rct2.scenery_small.tl3",
"rct2.scenery_small.tm0",
"rct2.scenery_small.tm1",
"rct2.scenery_small.tm2",
"rct2.scenery_small.tm3",
"rct2.scenery_small.ts0",
"rct2.scenery_small.ts1",
"rct2.scenery_small.ts2",
"rct2.scenery_small.ts3",
"rct2.scenery_small.ts4",
"rct2.scenery_small.ts5",
"rct2.scenery_small.ts6",
"rct2.scenery_small.tic",
"rct2.scenery_small.tlc",
"rct2.scenery_small.tmc",
"rct2.scenery_small.tmp",
"rct2.scenery_small.titc",
"rct2.scenery_small.tghc",
"rct2.scenery_small.tac",
"rct2.scenery_small.tghc2",
"rct2.scenery_small.tcj",
"rct2.scenery_small.tmbj",
"rct2.scenery_small.tcf",
"rct2.scenery_small.tcl",
"rct2.scenery_small.trf",
"rct2.scenery_small.trf2",
"rct2.scenery_small.tel",
"rct2.scenery_small.tap",
"rct2.scenery_small.tsp",
"rct2.scenery_small.tmzp",
"rct2.scenery_small.tcrp",
"rct2.scenery_small.tbp",
"rct2.scenery_small.tlp",
"rct2.scenery_small.twp",
"rct2.scenery_small.tas",
"rct2.scenery_small.tmg",
"rct2.scenery_small.tww",
"rct2.scenery_small.tsb",
"rct2.scenery_small.tvl",
"rct2.scenery_small.tct",
"rct2.scenery_small.tef",
"rct2.scenery_small.tal",
"rct2.scenery_small.tsq",
"rct2.scenery_small.tht",
"rct2.scenery_small.tcb",
"rct2.scenery_small.tdm",
"rct2.scenery_small.tsd",
"rct2.scenery_small.tgs",
"rct2.scenery_small.tus",
"rct2.scenery_small.th1",
"rct2.scenery_small.tbc",
"rct2.scenery_small.th2",
"rct2.scenery_small.tpm",
"rct2.scenery_small.tsc",
"rct2.scenery_small.tg1",
"rct2.scenery_small.twf",
"rct2.scenery_small.tsh0",
"rct2.scenery_small.tsh1",
"rct2.scenery_small.tsh2",
"rct2.scenery_small.tsh3",
"rct2.scenery_small.tsh4",
"rct2.scenery_small.tsh5",
"rct2.scenery_small.tg2",
"rct2.scenery_small.tg3",
"rct2.scenery_small.tg4",
"rct2.scenery_small.tg5",
"rct2.scenery_small.tg6",
"rct2.scenery_small.tg7",
"rct2.scenery_small.tg8",
"rct2.scenery_small.tg9",
"rct2.scenery_small.tg10",
"rct2.scenery_small.tg11",
"rct2.scenery_small.tg12",
"rct2.scenery_small.tg13",
"rct2.scenery_small.tg14",
"rct2.scenery_small.tt1",
"rct2.scenery_small.tdf",
"rct2.scenery_small.tsh",
"rct2.scenery_small.thrs",
"rct2.scenery_small.tstd",
"rct2.scenery_small.trms",
"rct2.scenery_small.trws",
"rct2.scenery_small.trc",
"rct2.scenery_small.tqf",
"rct2.scenery_small.tes1",
"rct2.scenery_small.ten",
"rct2.scenery_small.ters",
"rct2.scenery_small.terb",
"rct2.scenery_small.tep",
"rct2.scenery_small.tst1",
"rct2.scenery_small.tst2",
"rct2.scenery_small.tms1",
"rct2.scenery_small.tas1",
"rct2.scenery_small.tas2",
"rct2.scenery_small.tas3",
"rct2.scenery_small.tst3",
"rct2.scenery_small.tst4",
"rct2.scenery_small.tst5",
"rct2.scenery_small.tas4",
"rct2.scenery_small.tcy",
"rct2.scenery_small.tbw",
"rct2.scenery_small.tbr1",
"rct2.scenery_small.tbr2",
"rct2.scenery_small.tml",
"rct2.scenery_small.tmw",
"rct2.scenery_small.tbr3",
"rct2.scenery_small.tbr4",
"rct2.scenery_small.tmj",
"rct2.scenery_small.tbr",
"rct2.scenery_small.tmo1",
"rct2.scenery_small.tmo2",
"rct2.scenery_small.tmo3",
"rct2.scenery_small.tmo4",
"rct2.scenery_small.tmo5",
"rct2.scenery_small.twh1",
"rct2.scenery_small.twh2",
"rct2.scenery_small.tns",
"rct2.scenery_small.tp1",
"rct2.scenery_small.tp2",
"rct2.scenery_small.tk1",
"rct2.scenery_small.tk2",
"rct2.scenery_small.tr1",
"rct2.scenery_small.tr2",
"rct2.scenery_small.tq1",
"rct2.scenery_small.tq2",
"rct2.scenery_small.twn",
"rct2.scenery_small.tce",
"rct2.scenery_small.tco",
"rct2.scenery_small.thl",
"rct2.scenery_small.tcc",
"rct2.scenery_small.tb1",
"rct2.scenery_small.tb2",
"rct2.scenery_small.tk3",
"rct2.scenery_small.tk4",
"rct2.scenery_small.tbn",
"rct2.scenery_small.tbn1",
"rct2.scenery_small.tdt1",
"rct2.scenery_small.tdt2",
"rct2.scenery_small.tdt3",
"rct2.scenery_small.tmm1",
"rct2.scenery_small.tmm2",
"rct2.scenery_small.tmm3",
"rct2.scenery_small.tgs1",
"rct2.scenery_small.tgs2",
"rct2.scenery_small.tgs3",
"rct2.scenery_small.tgs4",
"rct2.scenery_small.tdn4",
"rct2.scenery_small.tdn5",
"rct2.scenery_small.tjt1",
"rct2.scenery_small.tjt2",
"rct2.scenery_small.tjb1",
"rct2.scenery_small.ttf",
"rct2.scenery_small.tf1",
"rct2.scenery_small.tf2",
"rct2.scenery_small.tge1",
"rct2.scenery_small.tjt3",
"rct2.scenery_small.tjt4",
"rct2.scenery_small.tjp1",
"rct2.scenery_small.tjb2",
"rct2.scenery_small.tge2",
"rct2.scenery_small.tjt5",
"rct2.scenery_small.tjb3",
"rct2.scenery_small.tjb4",
"rct2.scenery_small.tjt6",
"rct2.scenery_small.tjp2",
"rct2.scenery_small.tge3",
"rct2.scenery_small.tck",
"rct2.scenery_small.tge4",
"rct2.scenery_small.tge5",
"rct2.scenery_small.tg15",
"rct2.scenery_small.tg16",
"rct2.scenery_small.tg17",
"rct2.scenery_small.tg18",
"rct2.scenery_small.tg19",
"rct2.scenery_small.tg20",
"rct2.scenery_small.tg21",
"rct2.scenery_small.tsm",
"rct2.scenery_small.tig",
"rct2.scenery_small.tcfs",
"rct2.scenery_small.trfs",
"rct2.scenery_small.trf3",
"rct2.scenery_small.tnss",
"rct2.scenery_small.tct1",
"rct2.scenery_small.tct2",
"rct2.scenery_small.tsf1",
"rct2.scenery_small.tsf2",
"rct2.scenery_small.tsf3",
"rct2.scenery_small.tcn",
"rct2.scenery_small.ttg",
"rct2.scenery_small.tsnc",
"rct2.scenery_small.tsnb",
"rct2.scenery_small.tscp",
"rct2.scenery_small.tcd",
"rct2.scenery_small.tsg",
"rct2.scenery_small.tsk",
"rct2.scenery_small.tgh1",
"rct2.scenery_small.tgh2",
"rct2.scenery_small.tsmp",
"rct2.scenery_small.tjf",
"rct2.scenery_small.tly",
"rct2.scenery_small.tgc1",
"rct2.scenery_small.tgc2",
"rct2.scenery_small.tgg",
"rct2.scenery_small.tsph",
"rct2.scenery_small.toh1",
"rct2.scenery_small.toh2",
"rct2.scenery_small.tot1",
"rct2.scenery_small.tot2",
"rct2.scenery_small.tos",
"rct2.scenery_small.tot3",
"rct2.scenery_small.tot4",
"rct2.scenery_small.tsc2",
"rct2.scenery_small.tsp1",
"rct2.scenery_small.toh3",
"rct2.scenery_small.tsp2",
"rct2.scenery_small.romroof1",
"rct2.scenery_small.georoof1",
"rct2.scenery_small.tntroof1",
"rct2.scenery_small.jngroof1",
"rct2.scenery_small.minroof1",
"rct2.scenery_small.romroof2",
"rct2.scenery_small.georoof2",
"rct2.scenery_small.pagroof1",
"rct2.scenery_small.spcroof1",
"rct2.scenery_small.roof1",
"rct2.scenery_small.roof2",
"rct2.scenery_small.roof3",
"rct2.scenery_small.roof4",
"rct2.scenery_small.roof5",
"rct2.scenery_small.roof6",
"rct2.scenery_small.roof7",
"rct2.scenery_small.roof8",
"rct2.scenery_small.roof9",
"rct2.scenery_small.roof10",
"rct2.scenery_small.roof11",
"rct2.scenery_small.roof12",
"rct2.scenery_small.roof13",
"rct2.scenery_small.roof14",
"rct2.scenery_small.igroof",
"rct2.scenery_small.corroof",
"rct2.scenery_small.corroof2",
};
return map[smallSceneryType];
}
std::string_view GetLargeSceneryObject(uint8_t largeSceneryType)
{
static constexpr const char * map[] =
{
"rct2.scenery_large.scol",
"rct2.scenery_large.shs1",
"rct2.scenery_large.sspx",
"rct2.scenery_large.shs2",
"rct2.scenery_large.scln",
"rct2.scenery_large.smh1",
"rct2.scenery_large.smh2",
"rct2.scenery_large.svlc",
"rct2.scenery_large.spyr",
"rct2.scenery_large.smn1",
"rct2.scenery_large.smb",
"rct2.scenery_large.ssk1",
"rct2.scenery_large.sdn1",
"rct2.scenery_large.sdn2",
"rct2.scenery_large.sdn3",
"rct2.scenery_large.sip",
"rct2.scenery_large.stb1",
"rct2.scenery_large.stb2",
"rct2.scenery_large.stg1",
"rct2.scenery_large.stg2",
"rct2.scenery_large.sct",
"rct2.scenery_large.soh1",
"rct2.scenery_large.soh2",
"rct2.scenery_large.soh3",
"rct2.scenery_large.sgp",
"rct2.scenery_large.ssr",
"rct2.scenery_large.sth",
"rct2.scenery_large.sah",
"rct2.scenery_large.sps",
"rct2.scenery_large.spg",
"rct2.scenery_large.sob",
"rct2.scenery_large.sah2",
"rct2.scenery_large.sst",
"rct2.scenery_large.ssh",
"rct2.scenery_large.sah3",
"rct2.scenery_large.ssig1",
"rct2.scenery_large.ssig2",
"rct2.scenery_large.ssig3",
"rct2.scenery_large.ssig4",
};
return map[largeSceneryType];
}
std::string_view GetWallObject(uint8_t wallType)
{
static constexpr const char * map[] =
{
"rct2.scenery_wall.wmf", // RCT1_WALL_TYPE_MESH_FENCE
"rct2.scenery_wall.wmfg", // RCT1_WALL_TYPE_MESH_FENCE_WITH_GATE
"rct2.scenery_wall.wrw", // RCT1_WALL_TYPE_ROMAN
"rct2.scenery_wall.wew", // RCT1_WALL_TYPE_EGYPTIAN
"rct2.scenery_wall.whg", // RCT1_WALL_TYPE_HEDGE
"rct2.scenery_wall.whgg", // RCT1_WALL_TYPE_HEDGE_WITH_GATE
"rct2.scenery_wall.wcw1", // RCT1_WALL_TYPE_BLUE_PLAYING_CARDS
"rct2.scenery_wall.wcw2", // RCT1_WALL_TYPE_RED_PLAYING_CARDS
"rct2.scenery_wall.wsw", // RCT1_WALL_TYPE_WHITE_RAILING
"rct2.scenery_wall.wswg", // RCT1_WALL_TYPE_WHITE_RAILING_WITH_GATE
"rct2.scenery_wall.wmw", // RCT1_WALL_TYPE_MARTIAN
"rct2.scenery_wall.wallgl16", // RCT1_WALL_TYPE_GLASS_SMOOTH
"rct2.scenery_wall.wfw1", // RCT1_WALL_TYPE_WOODEN_PANEL_FENCE
"rct2.scenery_wall.wfwg", // RCT1_WALL_TYPE_WOODEN_PANEL_FENCE_WITH_GATE
"rct2.scenery_wall.wpw1", // RCT1_WALL_TYPE_WOODEN_POST_FENCE
"rct2.scenery_wall.wpw2", // RCT1_WALL_TYPE_RED_WOODEN_POST_FENCE
"rct2.scenery_wall.wpf", // RCT1_WALL_TYPE_BARBED_WIRE
"rct2.scenery_wall.wpfg", // RCT1_WALL_TYPE_BARBED_WIRE_WITH_GATE
"rct2.scenery_wall.wwtw", // RCT1_WALL_TYPE_PRIMITIVE_TALL_WOOD_FENCE
"rct2.scenery_wall.wmww", // RCT1_WALL_TYPE_PRIMITIVE_SHORT_WOOD_FENCE
"rct2.scenery_wall.wsw1", // RCT1_WALL_TYPE_IRON_RAILING
"rct2.scenery_wall.wsw2", // RCT1_WALL_TYPE_IRON_RAILING_WITH_GATE
"rct2.scenery_wall.wgw2", // RCT1_WALL_TYPE_GLASS_PANELS
"rct2.scenery_wall.wbw", // RCT1_WALL_TYPE_BONE_FENCE
"rct2.scenery_wall.wbr1", // RCT1_WALL_TYPE_BRICK
"rct2.scenery_wall.wbrg", // RCT1_WALL_TYPE_BRICK_WITH_GATE
"rct2.scenery_wall.wfw1", // RCT1_WALL_TYPE_WHITE_WOODEN_PANEL_FENCE
"rct1.scenery_wall.wooden_fence_red", // RCT1_WALL_TYPE_RED_WOODEN_PANEL_FENCE
"rct2.scenery_wall.wbr2", // RCT1_WALL_TYPE_STONE
"rct2.scenery_wall.wbr3", // RCT1_WALL_TYPE_STONE_WITH_GATE
"rct2.scenery_wall.wpw3", // RCT1_WALL_TYPE_WOODEN_FENCE
"rct2.scenery_wall.wjf", // RCT1_WALL_TYPE_JUNGLE
"rct2.scenery_wall.wch", // RCT1_WALL_TYPE_CONIFER_HEDGE
"rct2.scenery_wall.wchg", // RCT1_WALL_TYPE_CONIFER_HEDGE_WITH_GATE
"rct2.scenery_wall.wc1", // RCT1_WALL_TYPE_SMALL_BROWN_CASTLE
"rct2.scenery_wall.wc2", // RCT1_WALL_TYPE_SMALL_GREY_CASTLE
"rct2.scenery_wall.wc3", // RCT1_WALL_TYPE_ROMAN_COLUMN
"rct2.scenery_wall.wc4", // RCT1_WALL_TYPE_LARGE_BROWN_CASTLE
"rct2.scenery_wall.wc5", // RCT1_WALL_TYPE_LARGE_BROWN_CASTLE_CROSS
"rct2.scenery_wall.wc6", // RCT1_WALL_TYPE_LARGE_BROWN_CASTLE_GATE
"rct2.scenery_wall.wc7", // RCT1_WALL_TYPE_LARGE_BROWN_CASTLE_WINDOW
"rct2.scenery_wall.wc8", // RCT1_WALL_TYPE_MEDIUM_BROWN_CASTLE
"rct2.scenery_wall.wc9", // RCT1_WALL_TYPE_LARGE_GREY_CASTLE
"rct2.scenery_wall.wc10", // RCT1_WALL_TYPE_LARGE_GREY_CASTLE_CROSS
"rct2.scenery_wall.wc11", // RCT1_WALL_TYPE_LARGE_GREY_CASTLE_GATE
"rct2.scenery_wall.wc12", // RCT1_WALL_TYPE_LARGE_GREY_CASTLE_WINDOW
"rct2.scenery_wall.wc13", // RCT1_WALL_TYPE_MEDIUM_GREY_CASTLE
"rct2.scenery_wall.wc14", // RCT1_WALL_TYPE_CREEPY
"rct2.scenery_wall.wc15", // RCT1_WALL_TYPE_CREEPY_GATE
"rct2.scenery_wall.wc16", // RCT1_WALL_TYPE_BARBED_WIRE_WITH_SNOW
"rct2.scenery_wall.wc17", // RCT1_WALL_TYPE_WOODEN_PANEL_FENCE_WITH_SNOW
"rct2.scenery_wall.wc18", // RCT1_WALL_TYPE_WOODEN_POST_FENCE_WITH_SNOW
};
if (wallType < std::size(map))
return map[wallType];
return map[0];
}
std::string_view GetPathSurfaceObject(uint8_t pathType)
{
static constexpr const char * map[] =
{
"rct1.footpath_surface.queue_blue", // RCT1_FOOTPATH_TYPE_QUEUE_BLUE
"rct1aa.footpath_surface.queue_red", // RCT1_FOOTPATH_TYPE_QUEUE_RED
"rct1aa.footpath_surface.queue_yellow", // RCT1_FOOTPATH_TYPE_QUEUE_YELLOW
"rct1aa.footpath_surface.queue_green", // RCT1_FOOTPATH_TYPE_QUEUE_GREEN
"rct1.footpath_surface.tarmac", // RCT1_FOOTPATH_TYPE_TARMAC_GREY
"rct1aa.footpath_surface.tarmac_red", // RCT1_FOOTPATH_TYPE_TARMAC_RED
"rct1aa.footpath_surface.tarmac_brown", // RCT1_FOOTPATH_TYPE_TARMAC_BROWN
"rct1aa.footpath_surface.tarmac_green", // RCT1_FOOTPATH_TYPE_TARMAC_GREEN
"rct1.footpath_surface.dirt", // RCT1_FOOTPATH_TYPE_DIRT_BROWN
"rct1aa.footpath_surface.ash", // RCT1_FOOTPATH_TYPE_DIRT_BLACK
"",
"",
"rct1.footpath_surface.crazy_paving", // RCT1_FOOTPATH_TYPE_CRAZY_PAVING
"",
"",
"",
"rct2.footpath_surface.road", // RCT1_FOOTPATH_TYPE_ROAD
"",
"",
"",
"rct1.footpath_surface.tiles_brown", // RCT1_FOOTPATH_TYPE_TILE_BROWN
"rct1aa.footpath_surface.tiles_grey", // RCT1_FOOTPATH_TYPE_TILE_GREY
"rct1ll.footpath_surface.tiles_red", // RCT1_FOOTPATH_TYPE_TILE_RED
"rct1ll.footpath_surface.tiles_green", // RCT1_FOOTPATH_TYPE_TILE_GREEN
};
return map[pathType];
}
std::string_view GetPathAddtionObject(uint8_t pathAdditionType)
{
static constexpr const char * map[] =
{
"", // RCT1_PATH_ADDITION_NONE
"rct2.footpath_item.lamp1", // RCT1_PATH_ADDITION_LAMP_1
"rct2.footpath_item.lamp2", // RCT1_PATH_ADDITION_LAMP_2
"rct2.footpath_item.litter1", // RCT1_PATH_ADDITION_BIN
"rct2.footpath_item.bench1", // RCT1_PATH_ADDITION_BENCH
"rct2.footpath_item.jumpfnt1", // RCT1_PATH_ADDITION_JUMPING_FOUNTAIN
"rct2.footpath_item.lamp3", // RCT1_PATH_ADDITION_LAMP_3
"rct2.footpath_item.lamp4", // RCT1_PATH_ADDITION_LAMP_4
"rct2.footpath_item.lamp1", // RCT1_PATH_ADDITION_BROKEN_LAMP_1
"rct2.footpath_item.lamp2", // RCT1_PATH_ADDITION_BROKEN_LAMP_2
"rct2.footpath_item.litter1", // RCT1_PATH_ADDITION_BROKEN_BIN
"rct2.footpath_item.bench1", // RCT1_PATH_ADDITION_BROKEN_BENCH
"rct2.footpath_item.lamp3", // RCT1_PATH_ADDITION_BROKEN_LAMP_3
"rct2.footpath_item.lamp4", // RCT1_PATH_ADDITION_BROKEN_LAMP_4
"rct2.footpath_item.jumpsnw1", // RCT1_PATH_ADDITION_JUMPING_SNOW
};
return map[pathAdditionType];
}
std::string_view GetFootpathRailingsObject(uint8_t footpathRailingsType)
{
static constexpr const char * map[] =
{
"rct2.footpath_railings.wood", // RCT1_PATH_SUPPORT_TYPE_TRUSS
"rct2.footpath_railings.concrete", // RCT1_PATH_SUPPORT_TYPE_COATED_WOOD
"rct1ll.footpath_railings.space", // RCT1_PATH_SUPPORT_TYPE_SPACE
"rct1ll.footpath_railings.bamboo", // RCT1_PATH_SUPPORT_TYPE_BAMBOO
};
return map[footpathRailingsType];
}
std::string_view GetSceneryGroupObject(uint8_t sceneryGroupType)
{
static constexpr const char * map[] =
{
"", // RCT1_SCENERY_THEME_GENERAL
"rct2.scenery_group.scgmine", // RCT1_SCENERY_THEME_MINE
"rct2.scenery_group.scgclass", // RCT1_SCENERY_THEME_CLASSICAL_ROMAN
"rct2.scenery_group.scgegypt", // RCT1_SCENERY_THEME_EGYPTIAN
"rct2.scenery_group.scgmart", // RCT1_SCENERY_THEME_MARTIAN
"", // RCT1_SCENERY_THEME_JUMPING_FOUNTAINS
"rct2.scenery_group.scgwond", // RCT1_SCENERY_THEME_WONDERLAND
"rct2.scenery_group.scgjuras", // RCT1_SCENERY_THEME_JURASSIC
"rct2.scenery_group.scgspook", // RCT1_SCENERY_THEME_SPOOKY
"rct2.scenery_group.scgjungl", // RCT1_SCENERY_THEME_JUNGLE
"rct2.scenery_group.scgabstr", // RCT1_SCENERY_THEME_ABSTRACT
"", // RCT1_SCENERY_THEME_GARDEN_CLOCK
"rct2.scenery_group.scgsnow", // RCT1_SCENERY_THEME_SNOW_ICE
"rct2.scenery_group.scgmedie", // RCT1_SCENERY_THEME_MEDIEVAL
"rct2.scenery_group.scgspace", // RCT1_SCENERY_THEME_SPACE
"rct2.scenery_group.scghallo", // RCT1_SCENERY_THEME_CREEPY
"rct2.scenery_group.scgurban", // RCT1_SCENERY_THEME_URBAN
"rct2.scenery_group.scgorien", // RCT1_SCENERY_THEME_PAGODA
};
return map[sceneryGroupType];
}
std::string_view GetWaterObject(uint8_t waterType)
{
static constexpr const char * map[] =
{
"rct2.water.wtrcyan",
"rct2.water.wtrorng",
};
return map[waterType];
}
const std::vector<const char *> GetSceneryObjects(uint8_t sceneryType)
{
static const std::vector<const char *> map[] =
{
// RCT1_SCENERY_THEME_GENERAL (trees, shrubs, garden, walls, fence, path accessories)
{ "rct2.scenery_small.tic", "rct2.scenery_small.tlc", "rct2.scenery_small.tmc", "rct2.scenery_small.tmp", "rct2.scenery_small.titc", "rct2.scenery_small.tghc", "rct2.scenery_small.tac", "rct2.scenery_small.tghc2", "rct2.scenery_small.tcj", "rct2.scenery_small.tmbj", "rct2.scenery_small.tcf", "rct2.scenery_small.tcl", "rct2.scenery_small.trf", "rct2.scenery_small.trf2", "rct2.scenery_small.tel", "rct2.scenery_small.tap", "rct2.scenery_small.tsp", "rct2.scenery_small.tmzp", "rct2.scenery_small.tcrp", "rct2.scenery_small.tbp", "rct2.scenery_small.tlp", "rct2.scenery_small.twp", "rct2.scenery_small.tas", "rct2.scenery_small.tmg", "rct2.scenery_small.tww", "rct2.scenery_small.tsb", "rct2.scenery_small.tvl", "rct2.scenery_small.tcy", "rct2.scenery_small.tns", "rct2.scenery_small.twn", "rct2.scenery_small.tce", "rct2.scenery_small.tco", "rct2.scenery_small.thl", "rct2.scenery_small.tcc", "rct2.scenery_small.tf1", "rct2.scenery_small.tf2", "rct2.scenery_small.tct", "rct2.scenery_small.th1", "rct2.scenery_small.th2", "rct2.scenery_small.tpm", "rct2.scenery_small.tropt1",
"rct2.scenery_small.ts0", "rct2.scenery_small.ts1", "rct2.scenery_small.ts2", "rct2.scenery_small.ts3", "rct2.scenery_small.ts4", "rct2.scenery_small.ts5", "rct2.scenery_small.ts6", "rct2.scenery_small.tef", "rct2.scenery_small.tal", "rct2.scenery_small.tsq", "rct2.scenery_small.tht", "rct2.scenery_small.tcb", "rct2.scenery_small.tdm", "rct2.scenery_small.tsd", "rct2.scenery_small.torn1", "rct2.scenery_small.torn2", "rct2.scenery_small.tgs", "rct2.scenery_small.tus", "rct2.scenery_small.tbc", "rct2.scenery_small.tsc", "rct2.scenery_small.twf", "rct2.scenery_small.tsh0", "rct2.scenery_small.tsh1", "rct2.scenery_small.tsh2", "rct2.scenery_small.tsh3", "rct2.scenery_small.tsh4", "rct2.scenery_small.tsh5", "rct2.scenery_small.tdf", "rct2.scenery_small.tsh", "rct2.scenery_small.thrs", "rct2.scenery_small.tstd", "rct2.scenery_small.tbr", "rct2.scenery_small.ttf", "rct2.scenery_wall.whg", "rct2.scenery_wall.whgg", "rct2.scenery_wall.wch", "rct2.scenery_wall.wchg",
"rct2.scenery_small.tg1", "rct2.scenery_small.tg2", "rct2.scenery_small.tg3", "rct2.scenery_small.tg4", "rct2.scenery_small.tg5", "rct2.scenery_small.tg6", "rct2.scenery_small.tg7", "rct2.scenery_small.tg8", "rct2.scenery_small.tg9", "rct2.scenery_small.tg10", "rct2.scenery_small.tg11", "rct2.scenery_small.tg12", "rct2.scenery_small.tg13", "rct2.scenery_small.tg14", "rct2.scenery_small.tg15", "rct2.scenery_small.tg16", "rct2.scenery_small.tg17", "rct2.scenery_small.tg18", "rct2.scenery_small.tg19", "rct2.scenery_small.tg20", "rct2.scenery_small.tg21",
"rct2.scenery_wall.wbr1a", "rct2.scenery_wall.wbr2a", "rct2.scenery_wall.wallbb34", "rct2.scenery_wall.walltn32", "rct2.scenery_small.tntroof1", "rct2.scenery_wall.wallbb33", "rct2.scenery_wall.wallbb32", "rct2.scenery_wall.wallbb16", "rct2.scenery_wall.wallbb8", "rct2.scenery_small.roof5", "rct2.scenery_small.roof7", "rct2.scenery_wall.wallrs32", "rct2.scenery_wall.wallrs16", "rct2.scenery_wall.wallrs8", "rct2.scenery_wall.wallbr32", "rct2.scenery_wall.wallbr16", "rct2.scenery_wall.wallbr8", "rct2.scenery_wall.wallbrdr", "rct2.scenery_wall.wallbrwn", "rct2.scenery_small.brbase", "rct2.scenery_small.roof1", "rct2.scenery_small.roof2", "rct2.scenery_small.roof3", "rct2.scenery_small.roof4", "rct2.scenery_wall.wallcb32", "rct2.scenery_wall.wallcb16", "rct2.scenery_wall.wallcb8", "rct2.scenery_wall.wallcbdr", "rct2.scenery_wall.wallcbwn", "rct2.scenery_small.brbase2", "rct2.scenery_small.cwbcrv33", "rct2.scenery_small.cwbcrv32", "rct2.scenery_small.brcrrf1", "rct2.scenery_small.roof6", "rct2.scenery_small.roof8", "rct2.scenery_wall.wallcf32", "rct2.scenery_wall.wallcf16", "rct2.scenery_wall.wallcf8", "rct2.scenery_wall.wallcfdr", "rct2.scenery_wall.wallcfwn", "rct2.scenery_wall.wallcfar", "rct2.scenery_small.brbase3", "rct2.scenery_small.cwfcrv33", "rct2.scenery_small.cwfcrv32", "rct2.scenery_small.brcrrf2", "rct2.scenery_small.roof9", "rct2.scenery_small.roof11", "rct2.scenery_small.roof10", "rct2.scenery_small.roof12", "rct2.scenery_small.corroof2", "rct2.scenery_wall.wallco16", "rct2.scenery_small.corroof", "rct2.scenery_wall.walllt32", "rct2.scenery_wall.wallsk16", "rct2.scenery_wall.wallsk32", "rct2.scenery_small.sktdw2", "rct2.scenery_small.sktdw", "rct2.scenery_small.sktbase", "rct2.scenery_small.sktbaset", "rct2.scenery_small.suppw2", "rct2.scenery_small.suppw1", "rct2.scenery_small.suppw3", "rct2.scenery_small.suppleg1", "rct2.scenery_small.suppleg2", "rct2.scenery_small.sumrf", "rct2.scenery_wall.wallrh32",
"rct2.scenery_wall.wmf", "rct2.scenery_wall.wmfg", "rct2.scenery_wall.wsw", "rct2.scenery_wall.wswg", "rct2.scenery_wall.wfw1", "rct1.scenery_wall.wooden_fence_red", "rct2.scenery_wall.wfwg", "rct2.scenery_wall.wpf", "rct2.scenery_wall.wpfg", "rct2.scenery_wall.wsw1", "rct2.scenery_wall.wsw2", "rct2.scenery_wall.wbr1", "rct2.scenery_wall.wbrg", "rct2.scenery_wall.wbr2", "rct2.scenery_wall.wbr3", "rct2.scenery_wall.wallmm16", "rct2.scenery_wall.wallmm17",
"rct2.footpath_item.lamp1", "rct2.footpath_item.lamp2", "rct2.footpath_item.litter1", "rct2.footpath_item.bench1", "rct2.footpath_item.qtv1", "rct2.footpath_banner.bn1", "rct2.scenery_wall.wallpost", "rct2.scenery_wall.wallsign", "rct2.scenery_large.ssig1", "rct2.scenery_large.ssig2", "rct2.scenery_large.ssig3", "rct2.scenery_large.ssig4" },
// RCT1_SCENERY_THEME_MINE
{ "rct2.scenery_large.smh1", "rct2.scenery_large.smh2", "rct2.scenery_large.smn1", "rct2.scenery_small.tbw", "rct2.scenery_small.tbr1", "rct2.scenery_small.tbr2", "rct2.scenery_small.tml", "rct2.scenery_small.tmw", "rct2.scenery_small.tbr3", "rct2.scenery_small.tbr4", "rct2.scenery_small.tmj", "rct2.footpath_banner.bn5", "rct2.scenery_wall.wallwd8", "rct2.scenery_wall.wallwd16", "rct2.scenery_wall.wallwd32", "rct2.scenery_wall.wallwd33", "rct2.scenery_wall.wallmn32", "rct2.scenery_small.wdbase", "rct2.scenery_small.minroof1", "rct2.scenery_small.roof13", "rct2.footpath_item.littermn" },
// RCT1_SCENERY_THEME_CLASSICAL_ROMAN
{ "rct2.scenery_large.scol", "rct2.scenery_small.tt1", "rct2.scenery_small.trms", "rct2.scenery_small.trws", "rct2.scenery_small.trc", "rct2.scenery_small.tqf", "rct2.scenery_wall.wrw", "rct2.scenery_wall.wrwa", "rct2.scenery_small.romroof2", "rct2.scenery_wall.wc3", "rct2.scenery_small.romroof1", "rct2.footpath_banner.bn3" },
// RCT1_SCENERY_THEME_EGYPTIAN
{ "rct2.scenery_large.sspx", "rct2.scenery_large.scln", "rct2.scenery_large.spyr", "rct2.scenery_small.tes1", "rct2.scenery_small.ten", "rct2.scenery_small.ters", "rct2.scenery_small.terb", "rct2.scenery_small.tep", "rct2.scenery_wall.wew", "rct2.footpath_item.lamp3", "rct2.footpath_banner.bn4", "rct2.footpath_item.benchstn" },
// RCT1_SCENERY_THEME_MARTIAN
{ "rct2.scenery_large.smb", "rct2.scenery_small.tmo1", "rct2.scenery_small.tmo2", "rct2.scenery_small.tmo3", "rct2.scenery_small.tmo4", "rct2.scenery_small.tmo5", "rct2.scenery_large.svlc", "rct2.scenery_wall.wmw", "rct2.footpath_item.lamp4" },
// RCT1_SCENERY_THEME_JUMPING_FOUNTAINS (Single researchable scenery item)
{ "rct2.footpath_item.jumpfnt1" },
// RCT1_SCENERY_THEME_WONDERLAND
{ "rct2.scenery_small.twh1", "rct2.scenery_small.twh2", "rct2.scenery_small.tst1", "rct2.scenery_small.tst2", "rct2.scenery_small.tms1", "rct2.scenery_small.tst3", "rct2.scenery_small.tst4", "rct2.scenery_small.tst5", "rct2.scenery_small.tas1", "rct2.scenery_small.tas2", "rct2.scenery_small.tas3", "rct2.scenery_small.tas4", "rct2.scenery_small.chbbase", "rct2.scenery_small.tp1", "rct2.scenery_small.tp2", "rct2.scenery_small.tk1", "rct2.scenery_small.tk2", "rct2.scenery_small.tr1", "rct2.scenery_small.tr2", "rct2.scenery_small.tq1", "rct2.scenery_small.tq2", "rct2.scenery_small.tb1", "rct2.scenery_small.tb2", "rct2.scenery_small.tk3", "rct2.scenery_small.tk4", "rct2.scenery_wall.wcw1", "rct2.scenery_wall.wcw2" },
// RCT1_SCENERY_THEME_JURASSIC
{ "rct2.scenery_small.tbn", "rct2.scenery_small.tbn1", "rct2.scenery_small.tdn4", "rct2.scenery_small.tdn5", "rct2.scenery_large.sdn1", "rct2.scenery_large.sdn2", "rct2.scenery_large.sdn3", "rct2.scenery_wall.wwtw", "rct2.scenery_wall.wmww", "rct2.scenery_wall.wwtwa", "rct2.scenery_wall.wbw", "rct2.footpath_banner.bn6" },
// RCT1_SCENERY_THEME_SPOOKY,
{ "rct2.scenery_large.ssk1", "rct2.scenery_small.tdt1", "rct2.scenery_small.tdt2", "rct2.scenery_small.tdt3", "rct2.scenery_small.tmm1", "rct2.scenery_small.tmm2", "rct2.scenery_small.tmm3", "rct2.scenery_small.tgs1", "rct2.scenery_small.tgs2", "rct2.scenery_small.tgs3", "rct2.scenery_small.tgs4", "rct2.scenery_small.smskull", "rct2.scenery_wall.wallrk32" },
// RCT1_SCENERY_THEME_JUNGLE
{ "rct2.scenery_small.tjt1", "rct2.scenery_small.tjt2", "rct2.scenery_small.tjb1", "rct2.scenery_small.tjt3", "rct2.scenery_small.tjt4", "rct2.scenery_small.tjp1", "rct2.scenery_small.tjb2", "rct2.scenery_small.tjt5", "rct2.scenery_small.tjb3", "rct2.scenery_small.tjb4", "rct2.scenery_small.tjt6", "rct2.scenery_small.tjp2", "rct2.scenery_small.tjf", "rct2.scenery_wall.wpw1", "rct2.scenery_wall.wpw2", "rct2.scenery_wall.wjf", "rct2.footpath_banner.bn2", "rct2.scenery_wall.walljn32", "rct2.scenery_small.jngroof1", "rct2.scenery_small.roof14", "rct2.footpath_item.benchlog" },
// RCT1_SCENERY_THEME_ABSTRACT
{ "rct2.scenery_small.tge1", "rct2.scenery_small.tge2", "rct2.scenery_small.tge3", "rct2.scenery_small.tge4", "rct2.scenery_small.tge5", "rct2.scenery_small.tgc1", "rct2.scenery_small.tgc2", "rct2.scenery_wall.wallgl8", "rct2.scenery_wall.wallgl16", "rct2.scenery_wall.wallgl32", "rct2.scenery_small.georoof1", "rct2.scenery_wall.wgw2", "rct2.scenery_small.georoof2" },
// RCT1_SCENERY_THEME_GARDEN_CLOCK (Single researchable scenery item)
{ "rct2.scenery_small.tck" },
// RCT1_SCENERY_THEME_SNOW_ICE
{ "rct2.scenery_large.sip", "rct2.scenery_small.tsm", "rct2.scenery_small.tig", "rct2.scenery_small.tsf1", "rct2.scenery_small.tsf2", "rct2.scenery_small.tsf3", "rct2.scenery_small.tsnc", "rct2.scenery_small.tsnb", "rct2.scenery_wall.wc16", "rct2.scenery_wall.wc17", "rct2.scenery_wall.wc18", "rct2.footpath_item.jumpsnw1", "rct2.scenery_small.tcfs", "rct2.scenery_small.trfs", "rct2.scenery_small.trf3", "rct2.scenery_small.tnss", "rct2.footpath_banner.bn8", "rct2.scenery_wall.wallig16", "rct2.scenery_wall.wallig24", "rct2.scenery_small.igroof" },
// RCT1_SCENERY_THEME_MEDIEVAL
{ "rct2.scenery_small.tct1", "rct2.scenery_large.stb1", "rct2.scenery_large.stb2", "rct2.scenery_wall.wc1", "rct2.scenery_wall.wc4", "rct2.scenery_wall.wc5", "rct2.scenery_wall.wc6", "rct2.scenery_wall.wc7", "rct2.scenery_wall.wc8", "rct2.scenery_wall.wallcz32", "rct2.scenery_wall.wallcy32", "rct2.scenery_small.tct2", "rct2.scenery_large.stg1", "rct2.scenery_large.stg2", "rct2.scenery_wall.wc2", "rct2.scenery_wall.wc9", "rct2.scenery_wall.wc10", "rct2.scenery_wall.wc11", "rct2.scenery_wall.wc12", "rct2.scenery_wall.wc13", "rct2.scenery_wall.wallcw32", "rct2.scenery_wall.wallcx32", "rct2.scenery_small.tcn", "rct2.scenery_small.ttg", "rct2.scenery_large.sct", "rct2.scenery_large.soh1", "rct2.scenery_large.soh2", "rct2.scenery_large.soh3", "rct2.scenery_wall.wpw3", "rct2.scenery_wall.wallcfpc", "rct2.scenery_wall.wallcbpc" },
// RCT1_SCENERY_THEME_SPACE
{ "rct2.scenery_large.ssr", "rct2.scenery_large.sst", "rct2.scenery_large.ssh", "rct2.scenery_small.tscp", "rct2.scenery_small.tsph", "rct2.scenery_small.tsc2", "rct2.scenery_small.tsp1", "rct2.scenery_small.tsp2", "rct2.scenery_wall.wallsp32", "rct2.scenery_small.spcroof1", "rct2.footpath_banner.bn9", "rct2.footpath_item.benchspc", "rct2.footpath_item.littersp" },
// RCT1_SCENERY_THEME_CREEPY
{ "rct2.scenery_small.tcd", "rct2.scenery_small.tsg", "rct2.scenery_small.tsk", "rct2.scenery_small.tgh1", "rct2.scenery_small.tgh2", "rct2.scenery_small.tsmp", "rct2.scenery_large.sgp", "rct2.scenery_wall.wc14", "rct2.scenery_wall.wc15", "rct2.scenery_small.tl0", "rct2.scenery_small.tl1", "rct2.scenery_small.tl2", "rct2.scenery_small.tl3", "rct2.scenery_small.tm0", "rct2.scenery_small.tm1", "rct2.scenery_small.tm2", "rct2.scenery_small.tm3" },
// RCT1_SCENERY_THEME_URBAN
{ "rct2.scenery_large.shs1", "rct2.scenery_large.shs2", "rct2.scenery_large.sth", "rct2.scenery_large.sah", "rct2.scenery_large.sps", "rct2.scenery_large.sah2", "rct2.scenery_large.sah3", "rct2.scenery_large.sob", "rct2.scenery_wall.wallu132", "rct2.scenery_wall.wallu232" },
// RCT1_SCENERY_THEME_PAGODA
{ "rct2.scenery_large.spg", "rct2.scenery_small.tly", "rct2.scenery_small.tgg", "rct2.scenery_small.toh1", "rct2.scenery_small.toh2", "rct2.scenery_small.tot1", "rct2.scenery_small.tot2", "rct2.scenery_small.tos", "rct2.scenery_small.tot3", "rct2.scenery_small.tot4", "rct2.scenery_small.toh3", "rct2.scenery_wall.wallpg32", "rct2.scenery_small.pagroof1", "rct2.footpath_banner.bn7" }
};
return map[sceneryType];
}
// clang-format on
track_type_t RCT1TrackTypeToOpenRCT2(RCT12TrackType origTrackType, uint8_t rideType)
{
if (GetRideTypeDescriptor(rideType).HasFlag(RIDE_TYPE_FLAG_FLAT_RIDE))
return RCT12FlatTrackTypeToOpenRCT2(origTrackType);
return origTrackType;
}
} // namespace RCT1