mirror of https://github.com/OpenRCT2/OpenRCT2.git
Refactor some IsChild references to GetHead
This commit is contained in:
parent
520b1b4819
commit
ca807c5ed4
|
@ -3525,10 +3525,7 @@ static void vehicle_update_collision_setup(rct_vehicle* vehicle)
|
||||||
Ride* ride = get_ride(vehicle->ride);
|
Ride* ride = get_ride(vehicle->ride);
|
||||||
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_CRASHED))
|
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_CRASHED))
|
||||||
{
|
{
|
||||||
rct_vehicle* frontVehicle = vehicle;
|
auto frontVehicle = vehicle->GetHead();
|
||||||
while (frontVehicle->IsChild() != 0)
|
|
||||||
frontVehicle = GET_VEHICLE(frontVehicle->prev_vehicle_on_ride);
|
|
||||||
|
|
||||||
int trainIndex = ride_get_train_index_from_vehicle(ride, frontVehicle->sprite_index);
|
int trainIndex = ride_get_train_index_from_vehicle(ride, frontVehicle->sprite_index);
|
||||||
if (trainIndex == VEHICLE_INVALID_ID)
|
if (trainIndex == VEHICLE_INVALID_ID)
|
||||||
{
|
{
|
||||||
|
@ -5266,10 +5263,7 @@ static void vehicle_crash_on_land(rct_vehicle* vehicle)
|
||||||
Ride* ride = get_ride(vehicle->ride);
|
Ride* ride = get_ride(vehicle->ride);
|
||||||
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_CRASHED))
|
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_CRASHED))
|
||||||
{
|
{
|
||||||
rct_vehicle* frontVehicle = vehicle;
|
auto frontVehicle = vehicle->GetHead();
|
||||||
while (frontVehicle->IsChild() != 0)
|
|
||||||
frontVehicle = GET_VEHICLE(frontVehicle->prev_vehicle_on_ride);
|
|
||||||
|
|
||||||
int trainIndex = ride_get_train_index_from_vehicle(ride, frontVehicle->sprite_index);
|
int trainIndex = ride_get_train_index_from_vehicle(ride, frontVehicle->sprite_index);
|
||||||
if (trainIndex == VEHICLE_INVALID_ID)
|
if (trainIndex == VEHICLE_INVALID_ID)
|
||||||
{
|
{
|
||||||
|
@ -5323,10 +5317,7 @@ static void vehicle_crash_on_water(rct_vehicle* vehicle)
|
||||||
Ride* ride = get_ride(vehicle->ride);
|
Ride* ride = get_ride(vehicle->ride);
|
||||||
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_CRASHED))
|
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_CRASHED))
|
||||||
{
|
{
|
||||||
rct_vehicle* frontVehicle = vehicle;
|
auto frontVehicle = vehicle->GetHead();
|
||||||
while (frontVehicle->IsChild() != 0)
|
|
||||||
frontVehicle = GET_VEHICLE(frontVehicle->prev_vehicle_on_ride);
|
|
||||||
|
|
||||||
int trainIndex = ride_get_train_index_from_vehicle(ride, frontVehicle->sprite_index);
|
int trainIndex = ride_get_train_index_from_vehicle(ride, frontVehicle->sprite_index);
|
||||||
if (trainIndex == VEHICLE_INVALID_ID)
|
if (trainIndex == VEHICLE_INVALID_ID)
|
||||||
{
|
{
|
||||||
|
@ -10016,3 +10007,13 @@ void vehicle_claxon(const rct_vehicle* vehicle)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rct_vehicle* rct_vehicle::GetHead()
|
||||||
|
{
|
||||||
|
auto v = this;
|
||||||
|
while (v != nullptr && v->IsChild())
|
||||||
|
{
|
||||||
|
v = GET_VEHICLE(v->prev_vehicle_on_ride);
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
|
@ -222,6 +222,7 @@ struct rct_vehicle : rct_sprite_common
|
||||||
uint8_t target_seat_rotation; // 0xD9
|
uint8_t target_seat_rotation; // 0xD9
|
||||||
|
|
||||||
constexpr bool IsChild() const { return type != 0; }
|
constexpr bool IsChild() const { return type != 0; }
|
||||||
|
rct_vehicle* GetHead();
|
||||||
};
|
};
|
||||||
|
|
||||||
struct train_ref
|
struct train_ref
|
||||||
|
|
Loading…
Reference in New Issue