From 7afc7453fdab2747e6348948a2e7d1579ce20c96 Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Sun, 12 Apr 2015 16:25:22 +0100 Subject: [PATCH] Fix loading bugs --- src/ride/vehicle.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index 836ec16a91..9233383020 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -1256,7 +1256,6 @@ static void vehicle_update_waiting_for_passengers(rct_vehicle* vehicle){ } else{ if (num_peeps_on_train == 0){ - vehicle->var_48 |= (1 << 4); train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); return; } @@ -1265,13 +1264,13 @@ static void vehicle_update_waiting_for_passengers(rct_vehicle* vehicle){ if (RCT2_ADDRESS(RCT2_ADDRESS_RIDE_FLAGS, uint32)[ride->type * 2] & RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS){ if (ride->depart_flags & RIDE_DEPART_WAIT_FOR_MINIMUM_LENGTH){ if (ride->min_waiting_time * 32 > vehicle->var_C0){ - vehicle->var_48 |= (1 << 4); train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); return; } } if (ride->depart_flags & RIDE_DEPART_WAIT_FOR_MAXIMUM_LENGTH){ if (ride->max_waiting_time * 32 < vehicle->var_C0){ + vehicle->var_48 |= (1 << 4); train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); return; } @@ -1293,6 +1292,7 @@ static void vehicle_update_waiting_for_passengers(rct_vehicle* vehicle){ if (train->status == VEHICLE_STATUS_UNLOADING_PASSENGERS || train->status == VEHICLE_STATUS_MOVING_TO_END_OF_STATION){ if (train->current_station == vehicle->current_station){ + vehicle->var_48 |= (1 << 4); train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); return; } @@ -1304,41 +1304,42 @@ static void vehicle_update_waiting_for_passengers(rct_vehicle* vehicle){ ride->depart_flags & RIDE_DEPART_WAIT_FOR_LOAD){ if (num_peeps_on_train == num_seats_on_train){ + vehicle->var_48 |= (1 << 4); train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); return; } uint8 load = ride->depart_flags & RIDE_DEPART_WAIT_FOR_LOAD_MASK; if (load == 3){ - vehicle->var_48 |= (1 << 4); train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); return; } uint8 three_quater_seats = (3 * num_seats_on_train) / 4; if (three_quater_seats != 0 && num_peeps_on_train >= three_quater_seats){ + vehicle->var_48 |= (1 << 4); train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); return; } if (load == 2){ - vehicle->var_48 |= (1 << 4); train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); return; } if (num_seats_on_train / 2 != 0 && num_peeps_on_train >= num_seats_on_train / 2){ - train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); - return; - } - - if (load == 1){ vehicle->var_48 |= (1 << 4); train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); return; } + if (load == 1){ + train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); + return; + } + if (num_seats_on_train / 4 != 0 && num_peeps_on_train >= num_seats_on_train / 4){ + vehicle->var_48 |= (1 << 4); train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); return; } @@ -1351,9 +1352,9 @@ static void vehicle_update_waiting_for_passengers(rct_vehicle* vehicle){ if (num_peeps_on_train != 0){ vehicle->var_48 |= (1 << 4); - train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); - return; - } + } + train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train); + return; } vehicle->var_48 |= (1 << 4); train_ready_to_depart(vehicle, num_peeps_on_train, num_used_seats_on_train);