Skip to content

Commit

Permalink
Normalise reversed RCT1 trains when importing
Browse files Browse the repository at this point in the history
  • Loading branch information
Gymnasiast committed Feb 10, 2024
1 parent eae941e commit 7290168
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 3 deletions.
9 changes: 9 additions & 0 deletions src/openrct2/rct1/S4Importer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down Expand Up @@ -2892,6 +2896,11 @@ namespace RCT1
dst->SetFlag(VehicleFlags::Crashed);
}
dst->BlockBrakeSpeed = kRCT2DefaultBlockBrakeSpeed;

if (VehicleTypeIsReversed(rct1Ride.VehicleType))
{
dst->SetFlag(VehicleFlags::CarIsReversed);
}
}

template<> void S4Importer::ImportEntity<Guest>(const RCT12EntityBase& srcBase)
Expand Down
19 changes: 16 additions & 3 deletions src/openrct2/rct1/Tables.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -874,7 +874,7 @@ namespace RCT1
"rct2.ride.vekst", // VehicleType::FlyingRollerCoasterTrain
"rct2.ride.bmrb", // 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
Expand Down Expand Up @@ -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
2 changes: 2 additions & 0 deletions src/openrct2/rct1/Tables.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,6 @@ namespace RCT1
std::string_view GetTerrainEdgeObject(uint8_t terrainEdge);

const std::vector<const char*> GetSceneryObjects(uint8_t sceneryType);

bool VehicleTypeIsReversed(const VehicleType vehicleType);
} // namespace RCT1

0 comments on commit 7290168

Please sign in to comment.