Merge pull request #11896 from hdpoliveira/update_flags

Update flags
This commit is contained in:
Michael Steenbeek 2020-06-07 23:03:48 +02:00 committed by GitHub
commit 7646f1b7e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 66 additions and 58 deletions

View File

@ -4145,7 +4145,7 @@ static void window_ride_maintenance_dropdown(rct_window* w, rct_widgetindex widg
while (spriteId != SPRITE_INDEX_NULL) while (spriteId != SPRITE_INDEX_NULL)
{ {
vehicle = GET_VEHICLE(spriteId); vehicle = GET_VEHICLE(spriteId);
vehicle->update_flags &= ~( vehicle->ClearUpdateFlag(
VEHICLE_UPDATE_FLAG_BROKEN_CAR | VEHICLE_UPDATE_FLAG_ZERO_VELOCITY VEHICLE_UPDATE_FLAG_BROKEN_CAR | VEHICLE_UPDATE_FLAG_ZERO_VELOCITY
| VEHICLE_UPDATE_FLAG_BROKEN_TRAIN); | VEHICLE_UPDATE_FLAG_BROKEN_TRAIN);
spriteId = vehicle->next_vehicle_on_train; spriteId = vehicle->next_vehicle_on_train;
@ -4157,11 +4157,11 @@ static void window_ride_maintenance_dropdown(rct_window* w, rct_widgetindex widg
case BREAKDOWN_DOORS_STUCK_CLOSED: case BREAKDOWN_DOORS_STUCK_CLOSED:
case BREAKDOWN_DOORS_STUCK_OPEN: case BREAKDOWN_DOORS_STUCK_OPEN:
vehicle = &(get_sprite(ride->vehicles[ride->broken_vehicle])->vehicle); vehicle = &(get_sprite(ride->vehicles[ride->broken_vehicle])->vehicle);
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_BROKEN_CAR; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_CAR);
break; break;
case BREAKDOWN_VEHICLE_MALFUNCTION: case BREAKDOWN_VEHICLE_MALFUNCTION:
vehicle = &(get_sprite(ride->vehicles[ride->broken_vehicle])->vehicle); vehicle = &(get_sprite(ride->vehicles[ride->broken_vehicle])->vehicle);
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_BROKEN_TRAIN; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_TRAIN);
break; break;
} }
ride->lifecycle_flags &= ~(RIDE_LIFECYCLE_BREAKDOWN_PENDING | RIDE_LIFECYCLE_BROKEN_DOWN); ride->lifecycle_flags &= ~(RIDE_LIFECYCLE_BREAKDOWN_PENDING | RIDE_LIFECYCLE_BROKEN_DOWN);

View File

@ -2267,7 +2267,7 @@ bool Staff::UpdateFixingFixVehicle(bool firstRun, Ride* ride)
return true; return true;
} }
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_BROKEN_CAR; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_CAR);
return false; return false;
} }
@ -2308,7 +2308,7 @@ bool Staff::UpdateFixingFixVehicleMalfunction(bool firstRun, Ride* ride)
return true; return true;
} }
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_BROKEN_TRAIN; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_TRAIN);
return false; return false;
} }

View File

@ -2487,7 +2487,7 @@ void ride_prepare_breakdown(Ride* ride, int32_t breakdownReason)
} }
} }
if (vehicle != nullptr) if (vehicle != nullptr)
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_BROKEN_CAR; vehicle->SetUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_CAR);
} }
} }
break; break;
@ -2501,7 +2501,7 @@ void ride_prepare_breakdown(Ride* ride, int32_t breakdownReason)
if (vehicleSpriteIdx != SPRITE_INDEX_NULL) if (vehicleSpriteIdx != SPRITE_INDEX_NULL)
{ {
vehicle = GET_VEHICLE(vehicleSpriteIdx); vehicle = GET_VEHICLE(vehicleSpriteIdx);
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_BROKEN_TRAIN; vehicle->SetUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_TRAIN);
} }
break; break;
case BREAKDOWN_BRAKES_FAILURE: case BREAKDOWN_BRAKES_FAILURE:
@ -4504,7 +4504,7 @@ static Vehicle* vehicle_create_car(
{ {
if (tileElement->AsTrack()->IsInverted()) if (tileElement->AsTrack()->IsInverted())
{ {
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; vehicle->SetUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES);
} }
} }
vehicle->SetState(VEHICLE_STATUS_MOVING_TO_END_OF_STATION); vehicle->SetState(VEHICLE_STATUS_MOVING_TO_END_OF_STATION);
@ -4604,7 +4604,7 @@ static void vehicle_unset_update_flag_b1(Vehicle* head)
Vehicle* vehicle = head; Vehicle* vehicle = head;
while (true) while (true)
{ {
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_1; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1);
uint16_t spriteIndex = vehicle->next_vehicle_on_train; uint16_t spriteIndex = vehicle->next_vehicle_on_train;
if (spriteIndex == SPRITE_INDEX_NULL) if (spriteIndex == SPRITE_INDEX_NULL)
{ {
@ -4810,7 +4810,7 @@ void loc_6DDF9C(Ride* ride, TileElement* tileElement)
car = train; car = train;
while (true) while (true)
{ {
car->update_flags &= ~VEHICLE_UPDATE_FLAG_1; car->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1);
car->SetState(VEHICLE_STATUS_TRAVELLING, car->sub_state); car->SetState(VEHICLE_STATUS_TRAVELLING, car->sub_state);
if ((car->GetTrackType()) == TRACK_ELEM_END_STATION) if ((car->GetTrackType()) == TRACK_ELEM_END_STATION)
{ {
@ -6355,7 +6355,7 @@ void invalidate_test_results(Ride* ride)
if (spriteIndex != SPRITE_INDEX_NULL) if (spriteIndex != SPRITE_INDEX_NULL)
{ {
Vehicle* vehicle = GET_VEHICLE(spriteIndex); Vehicle* vehicle = GET_VEHICLE(spriteIndex);
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_TESTING; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_TESTING);
} }
} }
} }
@ -6384,9 +6384,9 @@ void ride_fix_breakdown(Ride* ride, int32_t reliabilityIncreaseFactor)
while (spriteIndex != SPRITE_INDEX_NULL) while (spriteIndex != SPRITE_INDEX_NULL)
{ {
Vehicle* vehicle = GET_VEHICLE(spriteIndex); Vehicle* vehicle = GET_VEHICLE(spriteIndex);
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_ZERO_VELOCITY; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_ZERO_VELOCITY);
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_BROKEN_CAR; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_CAR);
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_BROKEN_TRAIN; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_TRAIN);
spriteIndex = vehicle->next_vehicle_on_train; spriteIndex = vehicle->next_vehicle_on_train;
} }
} }

View File

@ -273,7 +273,7 @@ static void ride_race_init_vehicle_speeds(Ride* ride)
continue; continue;
Vehicle* vehicle = GET_VEHICLE(vehicleSpriteIdx); Vehicle* vehicle = GET_VEHICLE(vehicleSpriteIdx);
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_6; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_6);
rct_ride_entry* rideEntry = get_ride_entry(vehicle->ride_subtype); rct_ride_entry* rideEntry = get_ride_entry(vehicle->ride_subtype);

View File

@ -1590,7 +1590,7 @@ void Vehicle::UpdateMeasurements()
curRide->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; curRide->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
curRide->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; curRide->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
curRide->lifecycle_flags &= ~RIDE_LIFECYCLE_TEST_IN_PROGRESS; curRide->lifecycle_flags &= ~RIDE_LIFECYCLE_TEST_IN_PROGRESS;
update_flags &= ~VEHICLE_UPDATE_FLAG_TESTING; ClearUpdateFlag(VEHICLE_UPDATE_FLAG_TESTING);
window_invalidate_by_number(WC_RIDE, ride); window_invalidate_by_number(WC_RIDE, ride);
return; return;
} }
@ -2020,7 +2020,7 @@ void Vehicle::Update()
{ {
if (!(vehicleEntry->flags & VEHICLE_ENTRY_FLAG_WATER_RIDE) || (vehicle_sprite_type == 2 && velocity <= 0x20000)) if (!(vehicleEntry->flags & VEHICLE_ENTRY_FLAG_WATER_RIDE) || (vehicle_sprite_type == 2 && velocity <= 0x20000))
{ {
update_flags |= VEHICLE_UPDATE_FLAG_ZERO_VELOCITY; SetUpdateFlag(VEHICLE_UPDATE_FLAG_ZERO_VELOCITY);
} }
} }
} }
@ -2332,7 +2332,7 @@ void Vehicle::UpdateWaitingForPassengers()
if (time_waiting != 0xFFFF) if (time_waiting != 0xFFFF)
time_waiting++; time_waiting++;
update_flags &= ~VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART; ClearUpdateFlag(VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART);
// 0xF64E31, 0xF64E32, 0xF64E33 // 0xF64E31, 0xF64E32, 0xF64E33
uint8_t num_peeps_on_train = 0, num_used_seats_on_train = 0, num_seats_on_train = 0; uint8_t num_peeps_on_train = 0, num_used_seats_on_train = 0, num_seats_on_train = 0;
@ -2381,7 +2381,7 @@ void Vehicle::UpdateWaitingForPassengers()
{ {
if (curRide->max_waiting_time * 32 < time_waiting) if (curRide->max_waiting_time * 32 < time_waiting)
{ {
update_flags |= VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART; SetUpdateFlag(VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART);
TrainReadyToDepart(num_peeps_on_train, num_used_seats_on_train); TrainReadyToDepart(num_peeps_on_train, num_used_seats_on_train);
return; return;
} }
@ -2405,7 +2405,7 @@ void Vehicle::UpdateWaitingForPassengers()
{ {
if (train->current_station == current_station) if (train->current_station == current_station)
{ {
update_flags |= VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART; SetUpdateFlag(VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART);
TrainReadyToDepart(num_peeps_on_train, num_used_seats_on_train); TrainReadyToDepart(num_peeps_on_train, num_used_seats_on_train);
return; return;
} }
@ -2418,7 +2418,7 @@ void Vehicle::UpdateWaitingForPassengers()
{ {
if (num_peeps_on_train == num_seats_on_train) if (num_peeps_on_train == num_seats_on_train)
{ {
update_flags |= VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART; SetUpdateFlag(VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART);
TrainReadyToDepart(num_peeps_on_train, num_used_seats_on_train); TrainReadyToDepart(num_peeps_on_train, num_used_seats_on_train);
return; return;
} }
@ -2435,13 +2435,13 @@ void Vehicle::UpdateWaitingForPassengers()
peepTarget = 1; peepTarget = 1;
if (num_peeps_on_train >= peepTarget) if (num_peeps_on_train >= peepTarget)
update_flags |= VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART; SetUpdateFlag(VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART);
TrainReadyToDepart(num_peeps_on_train, num_used_seats_on_train); TrainReadyToDepart(num_peeps_on_train, num_used_seats_on_train);
return; return;
} }
update_flags |= VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART; SetUpdateFlag(VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART);
TrainReadyToDepart(num_peeps_on_train, num_used_seats_on_train); TrainReadyToDepart(num_peeps_on_train, num_used_seats_on_train);
return; return;
} }
@ -2450,11 +2450,11 @@ void Vehicle::UpdateWaitingForPassengers()
return; return;
velocity = 0; velocity = 0;
update_flags &= ~VEHICLE_UPDATE_FLAG_WAIT_ON_ADJACENT; ClearUpdateFlag(VEHICLE_UPDATE_FLAG_WAIT_ON_ADJACENT);
if (curRide->depart_flags & RIDE_DEPART_SYNCHRONISE_WITH_ADJACENT_STATIONS) if (curRide->depart_flags & RIDE_DEPART_SYNCHRONISE_WITH_ADJACENT_STATIONS)
{ {
update_flags |= VEHICLE_UPDATE_FLAG_WAIT_ON_ADJACENT; SetUpdateFlag(VEHICLE_UPDATE_FLAG_WAIT_ON_ADJACENT);
} }
SetState(VEHICLE_STATUS_WAITING_TO_DEPART); SetState(VEHICLE_STATUS_WAITING_TO_DEPART);
@ -3027,7 +3027,7 @@ static bool ride_station_can_depart_synchronised(ride_id_t curRideId, StationInd
if (sv->vehicle_id != SPRITE_INDEX_NULL) if (sv->vehicle_id != SPRITE_INDEX_NULL)
{ {
Vehicle* v = GET_VEHICLE(sv->vehicle_id); Vehicle* v = GET_VEHICLE(sv->vehicle_id);
v->update_flags &= ~VEHICLE_UPDATE_FLAG_WAIT_ON_ADJACENT; v->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_WAIT_ON_ADJACENT);
} }
} }
@ -3105,7 +3105,7 @@ void Vehicle::UpdateTestFinish()
if (!test_finish(ride)) if (!test_finish(ride))
return; return;
update_flags &= ~VEHICLE_UPDATE_FLAG_TESTING; ClearUpdateFlag(VEHICLE_UPDATE_FLAG_TESTING);
} }
/** /**
@ -3155,7 +3155,7 @@ static void test_reset(ride_id_t rideId, StationIndex curStation)
void Vehicle::TestReset() void Vehicle::TestReset()
{ {
update_flags |= VEHICLE_UPDATE_FLAG_TESTING; SetUpdateFlag(VEHICLE_UPDATE_FLAG_TESTING);
test_reset(ride, current_station); test_reset(ride, current_station);
} }
@ -3382,12 +3382,12 @@ void Vehicle::UpdateDeparting()
{ {
if (_vehicleBreakdown == BREAKDOWN_SAFETY_CUT_OUT) if (_vehicleBreakdown == BREAKDOWN_SAFETY_CUT_OUT)
{ {
update_flags |= VEHICLE_UPDATE_FLAG_ZERO_VELOCITY; SetUpdateFlag(VEHICLE_UPDATE_FLAG_ZERO_VELOCITY);
update_flags &= ~VEHICLE_UPDATE_FLAG_1; ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1);
} }
} }
else else
update_flags &= ~VEHICLE_UPDATE_FLAG_1; ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1);
} }
} }
else else
@ -3400,12 +3400,12 @@ void Vehicle::UpdateDeparting()
{ {
if (_vehicleBreakdown == BREAKDOWN_SAFETY_CUT_OUT) if (_vehicleBreakdown == BREAKDOWN_SAFETY_CUT_OUT)
{ {
update_flags |= VEHICLE_UPDATE_FLAG_ZERO_VELOCITY; SetUpdateFlag(VEHICLE_UPDATE_FLAG_ZERO_VELOCITY);
update_flags &= ~VEHICLE_UPDATE_FLAG_1; ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1);
} }
} }
else else
update_flags &= ~VEHICLE_UPDATE_FLAG_1; ClearUpdateFlag(VEHICLE_UPDATE_FLAG_1);
} }
} }
} }
@ -3839,7 +3839,7 @@ void Vehicle::UpdateTravelling()
if (_vehicleBreakdown == 0) if (_vehicleBreakdown == 0)
{ {
sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL; sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL;
update_flags |= VEHICLE_UPDATE_FLAG_ZERO_VELOCITY; SetUpdateFlag(VEHICLE_UPDATE_FLAG_ZERO_VELOCITY);
} }
} }
} }
@ -3855,7 +3855,7 @@ void Vehicle::UpdateTravelling()
{ {
if (_vehicleBreakdown == 0) if (_vehicleBreakdown == 0)
{ {
update_flags |= VEHICLE_UPDATE_FLAG_ZERO_VELOCITY; SetUpdateFlag(VEHICLE_UPDATE_FLAG_ZERO_VELOCITY);
sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL; sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL;
} }
} }
@ -3914,7 +3914,7 @@ void Vehicle::UpdateArriving()
case RIDE_MODE_SPACE_RINGS: case RIDE_MODE_SPACE_RINGS:
case RIDE_MODE_HAUNTED_HOUSE: case RIDE_MODE_HAUNTED_HOUSE:
case RIDE_MODE_CROOKED_HOUSE: case RIDE_MODE_CROOKED_HOUSE:
update_flags &= ~VEHICLE_UPDATE_FLAG_12; ClearUpdateFlag(VEHICLE_UPDATE_FLAG_12);
velocity = 0; velocity = 0;
acceleration = 0; acceleration = 0;
SetState(VEHICLE_STATUS_UNLOADING_PASSENGERS); SetState(VEHICLE_STATUS_UNLOADING_PASSENGERS);
@ -4003,7 +4003,7 @@ void Vehicle::UpdateArriving()
if (RideTypeDescriptors[curRide->type].Flags & RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS if (RideTypeDescriptors[curRide->type].Flags & RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS
&& curRide->mode != RIDE_MODE_SHUTTLE && curRide->mode != RIDE_MODE_POWERED_LAUNCH) && curRide->mode != RIDE_MODE_SHUTTLE && curRide->mode != RIDE_MODE_POWERED_LAUNCH)
{ {
update_flags |= VEHICLE_UPDATE_FLAG_12; SetUpdateFlag(VEHICLE_UPDATE_FLAG_12);
} }
else else
{ {
@ -4088,7 +4088,7 @@ loc_6D8E36:
return; return;
} }
update_flags &= ~VEHICLE_UPDATE_FLAG_12; ClearUpdateFlag(VEHICLE_UPDATE_FLAG_12);
velocity = 0; velocity = 0;
acceleration = 0; acceleration = 0;
SetState(VEHICLE_STATUS_UNLOADING_PASSENGERS); SetState(VEHICLE_STATUS_UNLOADING_PASSENGERS);
@ -6741,7 +6741,7 @@ void Vehicle::UpdateVelocity()
vertical_drop_countdown--; vertical_drop_countdown--;
if (vertical_drop_countdown == -70) if (vertical_drop_countdown == -70)
{ {
update_flags &= ~VEHICLE_UPDATE_FLAG_ON_BREAK_FOR_DROP; ClearUpdateFlag(VEHICLE_UPDATE_FLAG_ON_BREAK_FOR_DROP);
} }
if (vertical_drop_countdown >= 0) if (vertical_drop_countdown >= 0)
{ {
@ -7509,7 +7509,7 @@ static void VehicleUpdateGoKartAttemptSwitchLanes(Vehicle* vehicle)
uint16_t probability = 0x8000; uint16_t probability = 0x8000;
if (vehicle->UpdateFlag(VEHICLE_UPDATE_FLAG_6)) if (vehicle->UpdateFlag(VEHICLE_UPDATE_FLAG_6))
{ {
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_6; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_6);
} }
else else
{ {
@ -7789,7 +7789,7 @@ static bool vehicle_update_motion_collision_detection(
vehicle->var_C4++; vehicle->var_C4++;
if (vehicle->var_C4 < 200) if (vehicle->var_C4 < 200)
{ {
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_6; vehicle->SetUpdateFlag(VEHICLE_UPDATE_FLAG_6);
if (otherVehicleIndex != nullptr) if (otherVehicleIndex != nullptr)
*otherVehicleIndex = collideId; *otherVehicleIndex = collideId;
return true; return true;
@ -7835,7 +7835,7 @@ static bool vehicle_update_motion_collision_detection(
return false; return false;
} }
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_6; vehicle->SetUpdateFlag(VEHICLE_UPDATE_FLAG_6);
if (otherVehicleIndex != nullptr) if (otherVehicleIndex != nullptr)
*otherVehicleIndex = collideId; *otherVehicleIndex = collideId;
return true; return true;
@ -8056,14 +8056,14 @@ loc_6DB358:
} }
// Update VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES flag // Update VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES flag
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES);
{ {
int32_t rideType = get_ride(tileElement->AsTrack()->GetRideIndex())->type; int32_t rideType = get_ride(tileElement->AsTrack()->GetRideIndex())->type;
if (RideTypeDescriptors[rideType].Flags & RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE) if (RideTypeDescriptors[rideType].Flags & RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE)
{ {
if (tileElement->AsTrack()->IsInverted()) if (tileElement->AsTrack()->IsInverted())
{ {
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; vehicle->SetUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES);
} }
} }
} }
@ -8111,10 +8111,10 @@ loc_6DB41D:
// loc_6DB500 // loc_6DB500
// Update VEHICLE_UPDATE_FLAG_ON_LIFT_HILL // Update VEHICLE_UPDATE_FLAG_ON_LIFT_HILL
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_ON_LIFT_HILL; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_ON_LIFT_HILL);
if (tileElement->AsTrack()->HasChain()) if (tileElement->AsTrack()->HasChain())
{ {
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_ON_LIFT_HILL; vehicle->SetUpdateFlag(VEHICLE_UPDATE_FLAG_ON_LIFT_HILL);
} }
trackType = tileElement->AsTrack()->GetTrackType(); trackType = tileElement->AsTrack()->GetTrackType();
@ -8221,7 +8221,7 @@ loc_6DAEB9:
acceleration = -_vehicleVelocityF64E08 * 16; acceleration = -_vehicleVelocityF64E08 * 16;
if (track_progress >= 24) if (track_progress >= 24)
{ {
update_flags |= VEHICLE_UPDATE_FLAG_ON_BREAK_FOR_DROP; SetUpdateFlag(VEHICLE_UPDATE_FLAG_ON_BREAK_FOR_DROP);
vertical_drop_countdown = 90; vertical_drop_countdown = 90;
} }
} }
@ -8447,12 +8447,12 @@ static bool vehicle_update_track_motion_backwards_get_new_track(
} }
// Update VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES // Update VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES);
if (RideTypeDescriptors[ride->type].Flags & RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE) if (RideTypeDescriptors[ride->type].Flags & RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE)
{ {
if (tileElement->AsTrack()->IsInverted()) if (tileElement->AsTrack()->IsInverted())
{ {
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; vehicle->SetUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES);
} }
} }
@ -8507,14 +8507,14 @@ static bool vehicle_update_track_motion_backwards_get_new_track(
_vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_9; _vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_9;
} }
} }
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_ON_LIFT_HILL; vehicle->SetUpdateFlag(VEHICLE_UPDATE_FLAG_ON_LIFT_HILL);
} }
} }
else else
{ {
if (vehicle->UpdateFlag(VEHICLE_UPDATE_FLAG_ON_LIFT_HILL)) if (vehicle->UpdateFlag(VEHICLE_UPDATE_FLAG_ON_LIFT_HILL))
{ {
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_ON_LIFT_HILL; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_ON_LIFT_HILL);
if (vehicle->next_vehicle_on_train == SPRITE_INDEX_NULL) if (vehicle->next_vehicle_on_train == SPRITE_INDEX_NULL)
{ {
if (_vehicleVelocityF64E08 < 0) if (_vehicleVelocityF64E08 < 0)
@ -8868,12 +8868,12 @@ loc_6DC476:
{ {
int32_t rideType = get_ride(tileElement->AsTrack()->GetRideIndex())->type; int32_t rideType = get_ride(tileElement->AsTrack()->GetRideIndex())->type;
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES);
if (RideTypeDescriptors[rideType].Flags & RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE) if (RideTypeDescriptors[rideType].Flags & RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE)
{ {
if (tileElement->AsTrack()->IsInverted()) if (tileElement->AsTrack()->IsInverted())
{ {
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; vehicle->SetUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES);
} }
} }
} }
@ -8891,7 +8891,7 @@ loc_6DC476:
vehicle->TrackSubposition = regs.al; vehicle->TrackSubposition = regs.al;
} }
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_ON_LIFT_HILL; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_ON_LIFT_HILL);
vehicle->track_type = (tileElement->AsTrack()->GetTrackType() << 2) | (direction & 3); vehicle->track_type = (tileElement->AsTrack()->GetTrackType() << 2) | (direction & 3);
vehicle->var_CF = tileElement->AsTrack()->GetBrakeBoosterSpeed(); vehicle->var_CF = tileElement->AsTrack()->GetBrakeBoosterSpeed();
regs.ax = 0; regs.ax = 0;
@ -9114,12 +9114,12 @@ loc_6DCA9A:
{ {
int32_t rideType = get_ride(tileElement->AsTrack()->GetRideIndex())->type; int32_t rideType = get_ride(tileElement->AsTrack()->GetRideIndex())->type;
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES);
if (RideTypeDescriptors[rideType].Flags & RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE) if (RideTypeDescriptors[rideType].Flags & RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE)
{ {
if (tileElement->AsTrack()->IsInverted()) if (tileElement->AsTrack()->IsInverted())
{ {
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; vehicle->SetUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES);
} }
} }
} }
@ -9128,7 +9128,7 @@ loc_6DCA9A:
if (vehicle->UpdateFlag(VEHICLE_UPDATE_FLAG_ON_LIFT_HILL)) if (vehicle->UpdateFlag(VEHICLE_UPDATE_FLAG_ON_LIFT_HILL))
{ {
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_ON_LIFT_HILL; vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_ON_LIFT_HILL);
if (vehicle->next_vehicle_on_train == SPRITE_INDEX_NULL) if (vehicle->next_vehicle_on_train == SPRITE_INDEX_NULL)
{ {
if (_vehicleVelocityF64E08 < 0) if (_vehicleVelocityF64E08 < 0)

View File

@ -330,6 +330,14 @@ struct Vehicle : SpriteBase
{ {
return update_flags & flag; return update_flags & flag;
} }
void ClearUpdateFlag(uint32_t flag)
{
update_flags &= ~flag;
}
void SetUpdateFlag(uint32_t flag)
{
update_flags |= flag;
}
private: private:
bool SoundCanPlay() const; bool SoundCanPlay() const;