diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 07f07924c2..618310326b 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -831,6 +831,10 @@ namespace RCT1 dst->lifecycle_flags &= ~RIDE_LIFECYCLE_INDESTRUCTIBLE; dst->lifecycle_flags &= ~RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK; } + if (VehicleTypeIsReversed(src->VehicleType)) + { + dst->lifecycle_flags |= RIDE_LIFECYCLE_REVERSED_TRAINS; + } // Station if (src->OverallView.IsNull()) @@ -2903,6 +2907,11 @@ namespace RCT1 dst->SetFlag(VehicleFlags::Crashed); } dst->BlockBrakeSpeed = kRCT2DefaultBlockBrakeSpeed; + + if (VehicleTypeIsReversed(rct1Ride.VehicleType)) + { + dst->SetFlag(VehicleFlags::CarIsReversed); + } } template<> void S4Importer::ImportEntity(const RCT12EntityBase& srcBase) diff --git a/src/openrct2/rct1/Tables.cpp b/src/openrct2/rct1/Tables.cpp index 653e04e12d..0f97f24bdd 100644 --- a/src/openrct2/rct1/Tables.cpp +++ b/src/openrct2/rct1/Tables.cpp @@ -802,7 +802,7 @@ namespace RCT1 static constexpr const char * map[] = { "rct1.ride.steel_rc_trains", // VehicleType::SteelRollerCoasterTrain - "rct1.ride.steel_rc_trains_reversed", // VehicleType::SteelRollerCoasterTrainBackwards + "rct1.ride.steel_rc_trains", // VehicleType::SteelRollerCoasterTrainBackwards "rct1.ride.wooden_rc_trains", // VehicleType::WoodenRollerCoasterTrain "rct1.ride.inverted_trains", // VehicleType::InvertedCoasterTrain//NotinRCT2 "rct1.ride.suspended_swinging_cars", // VehicleType::SuspendedSwingingCars @@ -817,7 +817,7 @@ namespace RCT1 "rct1.ride.steam_trains", // VehicleType::SteamTrain "rct1.ride.mouse_cars", // VehicleType::WoodenMouseCars "rct1.ride.bumper_boats", // VehicleType::BumperBoats - "rct1.ride.wooden_rc_trains_reversed", // VehicleType::WoodenRollerCoasterTrainBackwards + "rct1.ride.wooden_rc_trains", // VehicleType::WoodenRollerCoasterTrainBackwards "rct1.ride.rocket_cars", // VehicleType::RocketCars "rct1.ride.horses", // VehicleType::Horses//Steeplechase "rct1.ride.sports_cars", // VehicleType::Sportscars @@ -874,7 +874,7 @@ namespace RCT1 "rct2.ride.vekst", // VehicleType::FlyingRollerCoasterTrain "rct1aa.ride.hyper_twister_trains", // VehicleType::NonLoopingSteelTwisterRollerCoasterTrain "rct1aa.ride.heartline_twister_cars", // VehicleType::HeartlineTwisterCars - "rct2.ride.utcarr", // VehicleType::HeartlineTwisterCarsReversed + "rct1aa.ride.heartline_twister_cars", // VehicleType::HeartlineTwisterCarsReversed "", // VehicleType::Reserved "rct2.ride.gdrop1", // VehicleType::RotodropCar "rct1aa.ride.flying_saucers", // VehicleType::FlyingSaucers @@ -1487,4 +1487,17 @@ namespace RCT1 return origTrackType; } + + bool VehicleTypeIsReversed(const VehicleType vehicleType) + { + switch (vehicleType) + { + case VehicleType::SteelRollerCoasterTrainBackwards: + case VehicleType::WoodenRollerCoasterTrainBackwards: + case VehicleType::HeartlineTwisterCarsReversed: + return true; + default: + return false; + } + } } // namespace RCT1 diff --git a/src/openrct2/rct1/Tables.h b/src/openrct2/rct1/Tables.h index b6577971bb..2c2ef53127 100644 --- a/src/openrct2/rct1/Tables.h +++ b/src/openrct2/rct1/Tables.h @@ -53,4 +53,6 @@ namespace RCT1 std::string_view GetTerrainEdgeObject(uint8_t terrainEdge); const std::vector GetSceneryObjects(uint8_t sceneryType); + + bool VehicleTypeIsReversed(const VehicleType vehicleType); } // namespace RCT1