1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-17 20:13:07 +01:00

Make RCT1::VehicleType a strong enum

This commit is contained in:
Gymnasiast
2024-02-08 00:03:00 +01:00
parent ce1240f8d1
commit c2ed24b183
5 changed files with 217 additions and 216 deletions

View File

@@ -109,6 +109,101 @@ namespace RCT1
Null = 255,
};
enum class VehicleType : uint8_t
{
SteelRollerCoasterTrain,
SteelRollerCoasterTrainBackwards,
WoodenRollerCoasterTrain,
InvertedCoasterTrain, // Not in RCT2
SuspendedSwingingCars,
LadybirdCars,
StandUpRollerCoasterCars,
SpinningCars,
SinglePersonSwingingChairs,
SwansPedalBoats,
LargeMonorailTrain,
Canoes,
RowingBoats,
SteamTrain,
WoodenMouseCars,
BumperBoats,
WoodenRollerCoasterTrainBackwards,
RocketCars,
Horses, // Steeplechase
Sportscars,
LyingDownSwingingCars, // Inverted single-rail
WoodenMineCars,
SuspendedSwingingAirplaneCars,
SmallMonorailCars,
WaterTricycles,
LaunchedFreefallCar,
BobsleighCars,
Dinghies,
RotatingCabin,
MineTrain,
ChairliftCars,
CorkscrewRollerCoasterTrain,
Motorbikes,
RacingCars,
Trucks,
GoKarts,
RapidsBoats,
LogFlumeBoats,
Dodgems,
SwingingShip,
SwingingInverterShip,
MerryGoRound,
FerrisWheel,
SimulatorPod,
CinemaBuilding,
TopspinCar,
SpaceRings,
ReverseFreefallRollerCoasterCar,
VerticalRollerCoasterCars,
CatCars,
TwistArmsAndCars,
HauntedHouseBuilding,
LogCars,
CircusTent,
GhostTrainCars,
SteelTwisterRollerCoasterTrain,
WoodenTwisterRollerCoasterTrain,
WoodenSideFrictionCars,
VintageCars,
SteamTrainCoveredCars,
StandUpSteelTwisterRollerCoasterTrain,
FloorlessSteelTwisterRollerCoasterTrain,
SteelMouseCars,
ChairliftCarsAlternative,
SuspendedMonorailTrain,
HelicopterCars,
VirginiaReelTubs,
ReverserCars,
Golfers,
RiverRideBoats,
FlyingRollerCoasterTrain,
NonLoopingSteelTwisterRollerCoasterTrain,
HeartlineTwisterCars,
HeartlineTwisterCarsReversed,
Reserved,
RotodropCar,
FlyingSaucers,
CrookedHouseBuilding,
Bicycles,
HypercoasterTrain,
_4AcrossInvertedCoasterTrain,
WaterCoasterBoats,
FaceoffCars,
JetSkis,
RaftBoats,
AmericanStyleSteamTrain,
AirPoweredCoasterTrain,
SuspendedWildMouseCars, // Inverted Hairpin in RCT2
EnterpriseWheel,
Count,
};
#pragma pack(push, 1)
struct Entrance
{
@@ -125,11 +220,11 @@ namespace RCT1
*/
struct Ride
{
RideType Type; // 0x000
uint8_t VehicleType; // 0x001
uint16_t LifecycleFlags; // 0x002
uint8_t OperatingMode; // 0x004
uint8_t ColourScheme; // 0x005
RideType Type; // 0x000
RCT1::VehicleType VehicleType; // 0x001
uint16_t LifecycleFlags; // 0x002
uint8_t OperatingMode; // 0x004
uint8_t ColourScheme; // 0x005
struct
{
colour_t Body;
@@ -792,7 +887,7 @@ namespace RCT1
struct TD4
{
RideType Type; // 0x00
uint8_t VehicleType;
RCT1::VehicleType VehicleType;
uint32_t Flags; // 0x02
uint8_t Mode; // 0x06
uint8_t VersionAndColourScheme; // 0x07 0b0000_VVCC
@@ -850,101 +945,6 @@ namespace RCT1
assert_struct_size(TD4AA, 0xC4);
#pragma pack(pop)
enum
{
RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN = 0,
RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN_BACKWARDS,
RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_INVERTED_COASTER_TRAIN, // Not in RCT2
RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_CARS,
RCT1_VEHICLE_TYPE_LADYBIRD_CARS,
RCT1_VEHICLE_TYPE_STANDUP_ROLLER_COASTER_CARS,
RCT1_VEHICLE_TYPE_SPINNING_CARS,
RCT1_VEHICLE_TYPE_SINGLE_PERSON_SWINGING_CHAIRS,
RCT1_VEHICLE_TYPE_SWANS_PEDAL_BOATS,
RCT1_VEHICLE_TYPE_LARGE_MONORAIL_TRAIN,
RCT1_VEHICLE_TYPE_CANOES,
RCT1_VEHICLE_TYPE_ROWING_BOATS,
RCT1_VEHICLE_TYPE_STEAM_TRAIN,
RCT1_VEHICLE_TYPE_WOODEN_MOUSE_CARS,
RCT1_VEHICLE_TYPE_BUMPER_BOATS,
RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN_BACKWARDS,
RCT1_VEHICLE_TYPE_ROCKET_CARS,
RCT1_VEHICLE_TYPE_HORSES, // Steeplechase
RCT1_VEHICLE_TYPE_SPORTSCARS,
RCT1_VEHICLE_TYPE_LYING_DOWN_SWINGING_CARS, // Inverted single-rail
RCT1_VEHICLE_TYPE_WOODEN_MINE_CARS,
RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_AIRPLANE_CARS,
RCT1_VEHICLE_TYPE_SMALL_MONORAIL_CARS,
RCT1_VEHICLE_TYPE_WATER_TRICYCLES,
RCT1_VEHICLE_TYPE_LAUNCHED_FREEFALL_CAR,
RCT1_VEHICLE_TYPE_BOBSLEIGH_CARS,
RCT1_VEHICLE_TYPE_DINGHIES,
RCT1_VEHICLE_TYPE_ROTATING_CABIN,
RCT1_VEHICLE_TYPE_MINE_TRAIN,
RCT1_VEHICLE_TYPE_CHAIRLIFT_CARS,
RCT1_VEHICLE_TYPE_CORKSCREW_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_MOTORBIKES,
RCT1_VEHICLE_TYPE_RACING_CARS,
RCT1_VEHICLE_TYPE_TRUCKS,
RCT1_VEHICLE_TYPE_GO_KARTS,
RCT1_VEHICLE_TYPE_RAPIDS_BOATS,
RCT1_VEHICLE_TYPE_LOG_FLUME_BOATS,
RCT1_VEHICLE_TYPE_DODGEMS,
RCT1_VEHICLE_TYPE_SWINGING_SHIP,
RCT1_VEHICLE_TYPE_SWINGING_INVERTER_SHIP,
RCT1_VEHICLE_TYPE_MERRY_GO_ROUND,
RCT1_VEHICLE_TYPE_FERRIS_WHEEL,
RCT1_VEHICLE_TYPE_SIMULATOR_POD,
RCT1_VEHICLE_TYPE_CINEMA_BUILDING,
RCT1_VEHICLE_TYPE_TOPSPIN_CAR,
RCT1_VEHICLE_TYPE_SPACE_RINGS,
RCT1_VEHICLE_TYPE_REVERSE_FREEFALL_ROLLER_COASTER_CAR,
RCT1_VEHICLE_TYPE_VERTICAL_ROLLER_COASTER_CARS,
RCT1_VEHICLE_TYPE_CAT_CARS,
RCT1_VEHICLE_TYPE_TWIST_ARMS_AND_CARS,
RCT1_VEHICLE_TYPE_HAUNTED_HOUSE_BUILDING,
RCT1_VEHICLE_TYPE_LOG_CARS,
RCT1_VEHICLE_TYPE_CIRCUS_TENT,
RCT1_VEHICLE_TYPE_GHOST_TRAIN_CARS,
RCT1_VEHICLE_TYPE_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_WOODEN_TWISTER_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_WOODEN_SIDE_FRICTION_CARS,
RCT1_VEHICLE_TYPE_VINTAGE_CARS,
RCT1_VEHICLE_TYPE_STEAM_TRAIN_COVERED_CARS,
RCT1_VEHICLE_TYPE_STAND_UP_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_FLOORLESS_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_STEEL_MOUSE_CARS,
RCT1_VEHICLE_TYPE_CHAIRLIFT_CARS_ALTERNATIVE,
RCT1_VEHICLE_TYPE_SUSPENDED_MONORAIL_TRAIN,
RCT1_VEHICLE_TYPE_HELICOPTER_CARS,
RCT1_VEHICLE_TYPE_VIRGINIA_REEL_TUBS,
RCT1_VEHICLE_TYPE_REVERSER_CARS,
RCT1_VEHICLE_TYPE_GOLFERS,
RCT1_VEHICLE_TYPE_RIVER_RIDE_BOATS,
RCT1_VEHICLE_TYPE_FLYING_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_NON_LOOPING_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS,
RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS_REVERSED,
RCT1_VEHICLE_TYPE_RESERVED,
RCT1_VEHICLE_TYPE_ROTODROP_CAR,
RCT1_VEHICLE_TYPE_FLYING_SAUCERS,
RCT1_VEHICLE_TYPE_CROOKED_HOUSE_BUILDING,
RCT1_VEHICLE_TYPE_BICYCLES,
RCT1_VEHICLE_TYPE_HYPERCOASTER_TRAIN,
RCT1_VEHICLE_TYPE_4_ACROSS_INVERTED_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_WATER_COASTER_BOATS,
RCT1_VEHICLE_TYPE_FACEOFF_CARS,
RCT1_VEHICLE_TYPE_JET_SKIS,
RCT1_VEHICLE_TYPE_RAFT_BOATS,
RCT1_VEHICLE_TYPE_AMERICAN_STYLE_STEAM_TRAIN,
RCT1_VEHICLE_TYPE_AIR_POWERED_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_SUSPENDED_WILD_MOUSE_CARS, // Inverted Hairpin in RCT2
RCT1_VEHICLE_TYPE_ENTERPRISE_WHEEL,
RCT1_VEHICLE_TYPE_COUNT
};
enum
{
RCT1_TRACK_ELEM_BOOSTER = 100

View File

@@ -106,7 +106,7 @@ namespace RCT1
// Lookup tables for converting from RCT1 hard coded types to the new dynamic object entries
ObjectEntryIndex _rideTypeToRideEntryMap[EnumValue(RideType::Count)]{};
ObjectEntryIndex _vehicleTypeToRideEntryMap[RCT1_VEHICLE_TYPE_COUNT]{};
ObjectEntryIndex _vehicleTypeToRideEntryMap[EnumValue(VehicleType::Count)]{};
ObjectEntryIndex _smallSceneryTypeToEntryMap[256]{};
ObjectEntryIndex _largeSceneryTypeToEntryMap[256]{};
ObjectEntryIndex _wallTypeToEntryMap[256]{};
@@ -453,7 +453,8 @@ namespace RCT1
// For some bizarre reason, RCT1 research lists contain vehicles that aren't actually researched.
if (rideTypeInResearch[researchItem->RelatedRide])
{
AddEntryForVehicleType(static_cast<RideType>(researchItem->RelatedRide), researchItem->Item);
AddEntryForVehicleType(
static_cast<RideType>(researchItem->RelatedRide), static_cast<VehicleType>(researchItem->Item));
}
break;
}
@@ -614,17 +615,17 @@ namespace RCT1
}
}
void AddEntryForVehicleType(RideType rideType, uint8_t vehicleType)
void AddEntryForVehicleType(RideType rideType, VehicleType vehicleType)
{
Guard::Assert(EnumValue(rideType) < std::size(_rideTypeToRideEntryMap));
if (_vehicleTypeToRideEntryMap[vehicleType] == OBJECT_ENTRY_INDEX_NULL)
if (_vehicleTypeToRideEntryMap[EnumValue(vehicleType)] == OBJECT_ENTRY_INDEX_NULL)
{
auto entryName = RCT1::GetVehicleObject(vehicleType);
if (!entryName.empty())
{
auto entryIndex = _rideEntries.GetOrAddEntry(entryName);
_vehicleTypeToRideEntryMap[vehicleType] = entryIndex;
_vehicleTypeToRideEntryMap[EnumValue(vehicleType)] = entryIndex;
if (rideType != RideType::Null)
AddEntryForRideType(rideType);
@@ -797,7 +798,7 @@ namespace RCT1
if (RCT1::RideTypeUsesVehicles(src->Type))
{
dst->subtype = _vehicleTypeToRideEntryMap[src->VehicleType];
dst->subtype = _vehicleTypeToRideEntryMap[EnumValue(src->VehicleType)];
}
else
{
@@ -1210,9 +1211,8 @@ namespace RCT1
void SetVehicleColours(::Vehicle* dst, const RCT1::Vehicle* src)
{
const auto& srcRide = _s4.Rides[src->Ride];
uint8_t vehicleTypeIndex = srcRide.VehicleType;
RCT1::VehicleColourSchemeCopyDescriptor colourSchemeCopyDescriptor = RCT1::GetColourSchemeCopyDescriptor(
vehicleTypeIndex);
srcRide.VehicleType);
// RCT1 had no third colour
if (colourSchemeCopyDescriptor.colour1 == COPY_COLOUR_1)
@@ -2717,7 +2717,7 @@ namespace RCT1
if (researchList[i].Type == RCT1_RESEARCH_TYPE_RIDE)
{
return RCT1::GetRideType(static_cast<RideType>(researchList[i].Item), 0);
return RCT1::GetRideType(static_cast<RideType>(researchList[i].Item), static_cast<VehicleType>(0));
}
}

View File

@@ -147,7 +147,7 @@ namespace RCT1
}
assert(!vehicleObject.empty());
td->vehicle_object = ObjectEntryDescriptor(vehicleObject);
td->vehicle_type = td4Base.VehicleType;
td->vehicle_type = EnumValue(td4Base.VehicleType);
td->flags = td4Base.Flags;
td->colour_scheme = td4Base.VersionAndColourScheme & 0x3;

View File

@@ -163,11 +163,11 @@ namespace RCT1
return terrainEdge < std::size(map) ? map[terrainEdge] : map[0];
}
uint8_t GetRideType(RideType rideType, uint8_t vehicleType)
uint8_t GetRideType(RideType rideType, VehicleType vehicleType)
{
if (rideType == RideType::SteelTwisterRollerCoaster && vehicleType == RCT1_VEHICLE_TYPE_NON_LOOPING_STEEL_TWISTER_ROLLER_COASTER_TRAIN)
if (rideType == RideType::SteelTwisterRollerCoaster && vehicleType == VehicleType::NonLoopingSteelTwisterRollerCoasterTrain)
return RIDE_TYPE_HYPER_TWISTER;
if (rideType == RideType::SteelCorkscrewRollerCoaster && vehicleType == RCT1_VEHICLE_TYPE_HYPERCOASTER_TRAIN)
if (rideType == RideType::SteelCorkscrewRollerCoaster && vehicleType == VehicleType::HypercoasterTrain)
return RIDE_TYPE_HYPERCOASTER;
static uint8_t map[] =
@@ -265,7 +265,7 @@ namespace RCT1
return map[index];
}
VehicleColourSchemeCopyDescriptor GetColourSchemeCopyDescriptor(uint8_t vehicleType)
VehicleColourSchemeCopyDescriptor GetColourSchemeCopyDescriptor(VehicleType vehicleType)
{
static VehicleColourSchemeCopyDescriptor map[89] =
{
@@ -360,8 +360,8 @@ namespace RCT1
{ 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];
Guard::ArgumentInRange<size_t>(EnumValue(vehicleType), 0, std::size(map), "Unsupported RCT1 vehicle type.");
return map[EnumValue(vehicleType)];
}
bool RideTypeUsesVehicles(RideType rideType)
@@ -422,7 +422,7 @@ namespace RCT1
return pathAdditionType;
}
uint8_t GetVehicleSubEntryIndex(uint8_t rct1VehicleType, uint8_t vehicleSubEntry)
uint8_t GetVehicleSubEntryIndex(VehicleType rct1VehicleType, uint8_t vehicleSubEntry)
{
static constexpr uint8_t map[] =
{
@@ -684,11 +684,11 @@ namespace RCT1
0,
};
if (rct1VehicleType == RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS)
if (rct1VehicleType == VehicleType::HeartlineTwisterCars)
{
return vehicleSubEntry == HEARTLINE_TWISTER_FORWARDS ? 0 : 1;
}
if (rct1VehicleType == RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS_REVERSED)
if (rct1VehicleType == VehicleType::HeartlineTwisterCarsReversed)
{
return vehicleSubEntry == HEARTLINE_TWISTER_BACKWARDS ? 0 : 1;
}
@@ -797,103 +797,103 @@ namespace RCT1
return map[index];
}
std::string_view GetVehicleObject(uint8_t vehicleType)
std::string_view GetVehicleObject(VehicleType vehicleType)
{
static constexpr const char * map[] =
{
"rct1.ride.steel_rc_trains", // RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN
"rct1.ride.steel_rc_trains_reversed", // RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN_BACKWARDS
"rct1.ride.wooden_rc_trains", // RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN
"rct1.ride.inverted_trains", // RCT1_VEHICLE_TYPE_INVERTED_COASTER_TRAIN (Not in RCT2)
"rct2.ride.arrsw1", // RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_CARS
"rct1.ride.ladybird_trains", // RCT1_VEHICLE_TYPE_LADYBIRD_CARS
"rct2.ride.togst", // RCT1_VEHICLE_TYPE_STANDUP_ROLLER_COASTER_CARS
"rct2.ride.wmspin", // RCT1_VEHICLE_TYPE_SPINNING_CARS
"rct1.ride.single_person_swinging_cars", // 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
"rct1.ride.wooden_rc_trains_reversed", // RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN_BACKWARDS
"rct1.ride.rocket_cars", // 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
"rct1.ride.corkscrew_trains", // 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
"rct1.ride.go_karts", // 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
"rct1.ride.log_trains", // 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
"rct1.ride.steel_rc_trains", // VehicleType::SteelRollerCoasterTrain
"rct1.ride.steel_rc_trains_reversed", // VehicleType::SteelRollerCoasterTrainBackwards
"rct1.ride.wooden_rc_trains", // VehicleType::WoodenRollerCoasterTrain
"rct1.ride.inverted_trains", // VehicleType::InvertedCoasterTrain//NotinRCT2
"rct2.ride.arrsw1", // VehicleType::SuspendedSwingingCars
"rct1.ride.ladybird_trains", // VehicleType::LadybirdCars
"rct2.ride.togst", // VehicleType::StandupRollerCoasterCars
"rct2.ride.wmspin", // VehicleType::SpinningCars
"rct1.ride.single_person_swinging_cars", // VehicleType::SinglePersonSwingingChairs
"rct2.ride.swans", // VehicleType::SwansPedalBoats
"rct2.ride.mono1", // VehicleType::LargeMonorailTrain
"rct2.ride.cboat", // VehicleType::Canoes
"rct2.ride.rboat", // VehicleType::RowingBoats
"rct2.ride.nrl", // VehicleType::SteamTrain
"rct2.ride.wmouse", // VehicleType::WoodenMouseCars
"rct2.ride.bboat", // VehicleType::BumperBoats
"rct1.ride.wooden_rc_trains_reversed", // VehicleType::WoodenRollerCoasterTrainBackwards
"rct1.ride.rocket_cars", // VehicleType::RocketCars
"rct2.ride.steep1", // VehicleType::Horses//Steeplechase
"rct2.ride.spcar", // VehicleType::Sportscars
"rct2.ride.skytr", // VehicleType::LyingDownSwingingCars//Invertedsingle-rail
"rct2.ride.wmmine", // VehicleType::WoodenMineCars
"rct2.ride.arrsw2", // VehicleType::SuspendedSwingingAirplaneCars
"rct2.ride.mono2", // VehicleType::SmallMonorailCars
"rct2.ride.trike", // VehicleType::WaterTricycles
"rct2.ride.ssc1", // VehicleType::LaunchedFreefallCar
"rct2.ride.bob1", // VehicleType::BobsleighCars
"rct2.ride.ding1", // VehicleType::Dinghies
"rct2.ride.obs1", // VehicleType::RotatingCabin
"rct2.ride.amt1", // VehicleType::MineTrain
"rct2.ride.clift1", // VehicleType::ChairliftCars
"rct1.ride.corkscrew_trains", // VehicleType::CorkscrewRollerCoasterTrain
"rct2.ride.steep2", // VehicleType::Motorbikes
"rct2.ride.rcr", // VehicleType::RacingCars
"rct2.ride.truck1", // VehicleType::Trucks
"rct1.ride.go_karts", // VehicleType::GoKarts
"rct2.ride.rapboat", // VehicleType::RapidsBoats
"rct2.ride.lfb1", // VehicleType::LogFlumeBoats
"rct2.ride.dodg1", // VehicleType::Dodgems
"rct2.ride.swsh1", // VehicleType::SwingingShip
"rct2.ride.swsh2", // VehicleType::SwingingInverterShip
"rct2.ride.mgr1", // VehicleType::MerryGoRound
"rct2.ride.fwh1", // VehicleType::FerrisWheel
"rct2.ride.simpod", // VehicleType::SimulatorPod
"rct2.ride.c3d", // VehicleType::CinemaBuilding
"rct2.ride.topsp1", // VehicleType::TopspinCar
"rct2.ride.srings", // VehicleType::SpaceRings
"rct2.ride.revf1", // VehicleType::ReverseFreefallRollerCoasterCar
"rct2.ride.bmvd", // VehicleType::VerticalRollerCoasterCars
"rct2.ride.ctcar", // VehicleType::CatCars
"rct2.ride.twist1", // VehicleType::TwistArmsAndCars
"rct2.ride.hhbuild", // VehicleType::HauntedHouseBuilding
"rct1.ride.log_trains", // VehicleType::LogCars
"rct2.ride.circus1", // VehicleType::CircusTent
"rct2.ride.gtc", // VehicleType::GhostTrainCars
"rct2.ride.bmsd", // VehicleType::SteelTwisterRollerCoasterTrain
"rct2.ride.mft", // VehicleType::WoodenTwisterRollerCoasterTrain
"rct2.ride.sfric1", // VehicleType::WoodenSideFrictionCars
"rct2.ride.vcr", // VehicleType::VintageCars
"rct2.ride.nrl2", // VehicleType::SteamTrainCoveredCars
"rct2.ride.bmsu", // VehicleType::StandUpSteelTwisterRollerCoasterTrain
"rct2.ride.bmfl", // VehicleType::FloorlessSteelTwisterRollerCoasterTrain
"rct2.ride.smc1", // VehicleType::SteelMouseCars
"rct2.ride.clift2", // VehicleType::ChairliftCarsAlternative
"rct2.ride.smono", // VehicleType::SuspendedMonorailTrain
"rct2.ride.helicar", // VehicleType::HelicopterCars
"rct2.ride.vreel", // VehicleType::VirginiaReelTubs
"rct2.ride.revcar", // VehicleType::ReverserCars
"rct2.ride.golf1", // VehicleType::Golfers
"rct2.ride.spboat", // VehicleType::RiverRideBoats
"rct2.ride.vekst", // VehicleType::FlyingRollerCoasterTrain
"rct2.ride.bmrb", // VehicleType::NonLoopingSteelTwisterRollerCoasterTrain
"rct2.ride.utcar", // VehicleType::HeartlineTwisterCars
"rct2.ride.utcarr", // VehicleType::HeartlineTwisterCarsReversed
"", // VehicleType::Reserved
"rct2.ride.gdrop1", // VehicleType::RotodropCar
"rct2.ride.fsauc", // VehicleType::FlyingSaucers
"rct2.ride.chbuild", // VehicleType::CrookedHouseBuilding
"rct2.ride.monbk", // VehicleType::Bicycles
"rct2.ride.arrt2", // VehicleType::HypercoasterTrain
"rct2.ride.nemt", // VehicleType::_4_Across_Inverted_Coaster_Train
"rct2.ride.cstboat", // VehicleType::WaterCoasterBoats
"rct2.ride.slcfo", // VehicleType::FaceoffCars
"rct2.ride.jski", // VehicleType::JetSkis
"rct2.ride.rftboat", // VehicleType::RaftBoats
"rct2.ride.aml1", // VehicleType::AmericanStyleSteamTrain
"rct2.ride.thcar", // VehicleType::AirPoweredCoasterTrain
"rct2.ride.ivmc1", // VehicleType::SuspendedWildMouseCars
"rct2.ride.enterp", // VehicleType::EnterpriseWheel
};
Guard::ArgumentInRange<size_t>(vehicleType, 0, std::size(map), "Unsupported RCT1 vehicle type.");
return map[vehicleType];
Guard::ArgumentInRange<size_t>(EnumValue(vehicleType), 0, std::size(map), "Unsupported RCT1 vehicle type.");
return map[EnumValue(vehicleType)];
}
std::string_view GetSmallSceneryObject(uint8_t smallSceneryType)

View File

@@ -11,6 +11,7 @@
#include "../common.h"
#include "../entity/Peep.h"
#include "RCT1.h"
#include <vector>
@@ -27,15 +28,15 @@ namespace RCT1
colour_t GetColour(colour_t colour);
::PeepSpriteType GetPeepSpriteType(PeepSpriteType rct1SpriteType);
uint8_t GetRideType(RideType rideType, uint8_t vehicleType);
VehicleColourSchemeCopyDescriptor GetColourSchemeCopyDescriptor(uint8_t vehicleType);
uint8_t GetRideType(RideType rideType, VehicleType vehicleType);
VehicleColourSchemeCopyDescriptor GetColourSchemeCopyDescriptor(VehicleType vehicleType);
bool RideTypeUsesVehicles(RideType rideType);
bool PathIsQueue(uint8_t pathType);
uint8_t NormalisePathAddition(uint8_t pathAdditionType);
uint8_t GetVehicleSubEntryIndex(uint8_t rct1VehicleType, uint8_t vehicleSubEntry);
uint8_t GetVehicleSubEntryIndex(VehicleType rct1VehicleType, uint8_t vehicleSubEntry);
std::string_view GetRideTypeObject(RideType rideType, bool isLL);
std::string_view GetVehicleObject(uint8_t vehicleType);
std::string_view GetVehicleObject(VehicleType vehicleType);
std::string_view GetSmallSceneryObject(uint8_t smallSceneryType);
std::string_view GetLargeSceneryObject(uint8_t largeSceneryType);
/**