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:
@@ -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
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user