From ea9dd60b91a98be9b4291957f905831043866254 Mon Sep 17 00:00:00 2001 From: Hudson Oliveira <35645457+hdpoliveira@users.noreply.github.com> Date: Fri, 19 Jun 2020 14:06:21 -0300 Subject: [PATCH] Part of #9473: Create Vehicle::UpdateGoKartAttemptSwitchLanes (#11995) --- src/openrct2/ride/Vehicle.cpp | 20 +++++++------------- src/openrct2/ride/Vehicle.h | 1 + 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 6102db1f70..3e20d980f1 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -7493,12 +7493,12 @@ static bool loc_6DB38B(Vehicle* vehicle, TileElement* tileElement) return vangleStart == _vehicleVAngleEndF64E36 && bankStart == _vehicleBankEndF64E37; } -static void VehicleUpdateGoKartAttemptSwitchLanes(Vehicle* vehicle) +void Vehicle::UpdateGoKartAttemptSwitchLanes() { uint16_t probability = 0x8000; - if (vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_6)) + if (HasUpdateFlag(VEHICLE_UPDATE_FLAG_6)) { - vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_6); + ClearUpdateFlag(VEHICLE_UPDATE_FLAG_6); } else { @@ -7507,7 +7507,7 @@ static void VehicleUpdateGoKartAttemptSwitchLanes(Vehicle* vehicle) if ((scenario_rand() & 0xFFFF) <= probability) { // This changes "riding left" to "moving to right lane" and "riding right" to "moving to left lane". - vehicle->TrackSubposition += 2; + TrackSubposition += 2; } } @@ -8065,16 +8065,10 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack(uint16_t trackType, Ride* cur && TrackSubposition < VEHICLE_TRACK_SUBPOSITION_GO_KARTS_MOVING_TO_RIGHT_LANE) { trackType = tileElement->AsTrack()->GetTrackType(); - if (trackType == TRACK_ELEM_FLAT) + if (trackType == TRACK_ELEM_FLAT + || ((curRide->lifecycle_flags & RIDE_LIFECYCLE_PASS_STATION_NO_STOPPING) && tileElement->AsTrack()->IsStation())) { - VehicleUpdateGoKartAttemptSwitchLanes(this); - } - else if (curRide->lifecycle_flags & RIDE_LIFECYCLE_PASS_STATION_NO_STOPPING) - { - if (tileElement->AsTrack()->IsStation()) - { - VehicleUpdateGoKartAttemptSwitchLanes(this); - } + UpdateGoKartAttemptSwitchLanes(); } } diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 7e6e9a3f5c..25b6503f79 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -425,6 +425,7 @@ private: void UpdateTrackMotionMiniGolfVehicle(Ride* curRide, rct_ride_entry* rideEntry, rct_ride_entry_vehicle* vehicleEntry); bool UpdateTrackMotionForwardsGetNewTrack(uint16_t trackType, Ride* curRide, rct_ride_entry* rideEntry); bool UpdateTrackMotionBackwardsGetNewTrack(uint16_t trackType, Ride* curRide, uint16_t* progress); + void UpdateGoKartAttemptSwitchLanes(); }; struct train_ref