From 6517757df755c870fe3b5d788ec4197027211246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Tue, 3 Nov 2020 20:08:10 +0100 Subject: [PATCH 1/2] Rename VEHICLE_UPDATE_FLAG_1 --- src/openrct2/ride/CableLift.cpp | 2 +- src/openrct2/ride/Ride.cpp | 6 +++--- src/openrct2/ride/Vehicle.cpp | 10 +++++----- src/openrct2/ride/Vehicle.h | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index b47b588512..7b36b833b5 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -74,7 +74,7 @@ Vehicle* cable_lift_segment_create( current->MoveTo({ 16, 16, z }); current->track_type = (TrackElemType::CableLiftHill << 2) | (current->sprite_direction >> 3); current->track_progress = 164; - current->update_flags = VEHICLE_UPDATE_FLAG_1; + current->update_flags = VEHICLE_UPDATE_FLAG_COLLISION_DISABLED; current->SetState(Vehicle::Status::MovingToEndOfStation, 0); current->num_peeps = 0; current->next_free_seat = 0; diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index dea4ecf219..6f2fb1db49 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -4530,7 +4530,7 @@ static Vehicle* vehicle_create_car( { vehicle->track_progress = 15; } - vehicle->update_flags = VEHICLE_UPDATE_FLAG_1; + vehicle->update_flags = VEHICLE_UPDATE_FLAG_COLLISION_DISABLED; if (vehicleEntry->flags & VEHICLE_ENTRY_FLAG_HAS_INVERTED_SPRITE_SET) { if (trackElement->IsInverted()) @@ -4635,7 +4635,7 @@ static void vehicle_unset_update_flag_b1(Vehicle* head) { for (auto vehicle = head; vehicle != nullptr; vehicle = GetEntity(vehicle->next_vehicle_on_train)) { - vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1); + vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_COLLISION_DISABLED); } } @@ -4827,7 +4827,7 @@ void loc_6DDF9C(Ride* ride, TileElement* tileElement) tileElement->AsTrack()->SetBlockBrakeClosed(true); for (Vehicle* car = train; car != nullptr; car = GetEntity(car->next_vehicle_on_train)) { - car->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1); + car->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_COLLISION_DISABLED); car->SetState(Vehicle::Status::Travelling, car->sub_state); if ((car->GetTrackType()) == TrackElemType::EndStation) { diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 591c7f0560..5969ccb5b1 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -3340,11 +3340,11 @@ void Vehicle::UpdateDeparting() if (_vehicleBreakdown == BREAKDOWN_SAFETY_CUT_OUT) { SetUpdateFlag(VEHICLE_UPDATE_FLAG_ZERO_VELOCITY); - ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1); + ClearUpdateFlag(VEHICLE_UPDATE_FLAG_COLLISION_DISABLED); } } else - ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1); + ClearUpdateFlag(VEHICLE_UPDATE_FLAG_COLLISION_DISABLED); } } else @@ -3358,11 +3358,11 @@ void Vehicle::UpdateDeparting() if (_vehicleBreakdown == BREAKDOWN_SAFETY_CUT_OUT) { SetUpdateFlag(VEHICLE_UPDATE_FLAG_ZERO_VELOCITY); - ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1); + ClearUpdateFlag(VEHICLE_UPDATE_FLAG_COLLISION_DISABLED); } } else - ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1); + ClearUpdateFlag(VEHICLE_UPDATE_FLAG_COLLISION_DISABLED); } } } @@ -7620,7 +7620,7 @@ void Vehicle::UpdateReverserCarBogies() */ bool Vehicle::UpdateMotionCollisionDetection(const CoordsXYZ& loc, uint16_t* otherVehicleIndex) { - if (HasUpdateFlag(VEHICLE_UPDATE_FLAG_1)) + if (HasUpdateFlag(VEHICLE_UPDATE_FLAG_COLLISION_DISABLED)) return false; auto vehicleEntry = Entry(); diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 710df9a385..5071304802 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -513,7 +513,7 @@ enum enum : uint32_t { VEHICLE_UPDATE_FLAG_ON_LIFT_HILL = (1 << 0), - VEHICLE_UPDATE_FLAG_1 = (1 << 1), + VEHICLE_UPDATE_FLAG_COLLISION_DISABLED = (1 << 1), VEHICLE_UPDATE_FLAG_WAIT_ON_ADJACENT = (1 << 2), VEHICLE_UPDATE_FLAG_REVERSING_SHUTTLE = (1 << 3), // Shuttle is in reverse VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART = (1 << 4), From 47419b8ba1e0b9ae59a95e22e065b0672ddf56d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Tue, 3 Nov 2020 21:36:26 +0100 Subject: [PATCH 2/2] Rename vehicle_unset_update_flag_b1 and move it into Vehicle --- src/openrct2/ride/Ride.cpp | 12 ++---------- src/openrct2/ride/Vehicle.cpp | 9 +++++++++ src/openrct2/ride/Vehicle.h | 1 + 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 6f2fb1db49..5eeaba051f 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -4631,14 +4631,6 @@ static void vehicle_create_trains(ride_id_t rideIndex, const CoordsXYZ& trainsPo lastTrain.tail->next_vehicle_on_ride = firstTrain.head->sprite_index; } -static void vehicle_unset_update_flag_b1(Vehicle* head) -{ - for (auto vehicle = head; vehicle != nullptr; vehicle = GetEntity(vehicle->next_vehicle_on_train)) - { - vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_COLLISION_DISABLED); - } -} - /** * * rct2: 0x006DDE9E @@ -4783,7 +4775,7 @@ static bool ride_create_vehicles(Ride* ride, const CoordsXYE& element, int32_t i vehicle->UpdateTrackMotion(nullptr); } - vehicle_unset_update_flag_b1(vehicle); + vehicle->EnableCollisionsForTrain(); } } } @@ -4806,7 +4798,7 @@ void loc_6DDF9C(Ride* ride, TileElement* tileElement) if (i == 0) { train->UpdateTrackMotion(nullptr); - vehicle_unset_update_flag_b1(train); + train->EnableCollisionsForTrain(); continue; } diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 5969ccb5b1..992e653ebd 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -9886,3 +9886,12 @@ bool Vehicle::IsGhost() const auto r = GetRide(); return r != nullptr && r->status == RIDE_STATUS_SIMULATING; } + +void Vehicle::EnableCollisionsForTrain() +{ + assert(this->IsHead()); + for (auto vehicle = this; vehicle != nullptr; vehicle = GetEntity(vehicle->next_vehicle_on_train)) + { + vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_COLLISION_DISABLED); + } +} diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 5071304802..8a73825e1b 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -331,6 +331,7 @@ struct Vehicle : SpriteBase Ride* GetRide() const; Vehicle* TrainHead() const; Vehicle* TrainTail() const; + void EnableCollisionsForTrain(); uint16_t GetTrackType() const {