diff --git a/src/openrct2/rct1/RCT1.h b/src/openrct2/rct1/RCT1.h index 8390cc9089..dbb78a1801 100644 --- a/src/openrct2/rct1/RCT1.h +++ b/src/openrct2/rct1/RCT1.h @@ -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 diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index eeaf791825..54a4a589f5 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -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(researchItem->RelatedRide), researchItem->Item); + AddEntryForVehicleType( + static_cast(researchItem->RelatedRide), static_cast(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(researchList[i].Item), 0); + return RCT1::GetRideType(static_cast(researchList[i].Item), static_cast(0)); } } diff --git a/src/openrct2/rct1/T4Importer.cpp b/src/openrct2/rct1/T4Importer.cpp index 54447374c7..f3c73e5bdd 100644 --- a/src/openrct2/rct1/T4Importer.cpp +++ b/src/openrct2/rct1/T4Importer.cpp @@ -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; diff --git a/src/openrct2/rct1/Tables.cpp b/src/openrct2/rct1/Tables.cpp index e603d66480..e433d3599b 100644 --- a/src/openrct2/rct1/Tables.cpp +++ b/src/openrct2/rct1/Tables.cpp @@ -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(vehicleType, 0, std::size(map), "Unsupported RCT1 vehicle type."); - return map[vehicleType]; + Guard::ArgumentInRange(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(vehicleType, 0, std::size(map), "Unsupported RCT1 vehicle type."); - return map[vehicleType]; + Guard::ArgumentInRange(EnumValue(vehicleType), 0, std::size(map), "Unsupported RCT1 vehicle type."); + return map[EnumValue(vehicleType)]; } std::string_view GetSmallSceneryObject(uint8_t smallSceneryType) diff --git a/src/openrct2/rct1/Tables.h b/src/openrct2/rct1/Tables.h index bf9a62ff8d..b6577971bb 100644 --- a/src/openrct2/rct1/Tables.h +++ b/src/openrct2/rct1/Tables.h @@ -11,6 +11,7 @@ #include "../common.h" #include "../entity/Peep.h" +#include "RCT1.h" #include @@ -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); /**