mirror of https://github.com/OpenRCT2/OpenRCT2.git
Part of #9473: vehicle_update_waiting_to_depart to Vehicle::UpdateWaitingToDepart
This commit is contained in:
parent
3b5f9a372f
commit
d39b4e9400
|
@ -50,7 +50,6 @@ static void vehicle_claxon(const Vehicle* vehicle);
|
||||||
|
|
||||||
static void vehicle_update_showing_film(Vehicle* vehicle);
|
static void vehicle_update_showing_film(Vehicle* vehicle);
|
||||||
static void vehicle_update_doing_circus_show(Vehicle* vehicle);
|
static void vehicle_update_doing_circus_show(Vehicle* vehicle);
|
||||||
static void vehicle_update_waiting_to_depart(Vehicle* vehicle);
|
|
||||||
static void vehicle_update_departing(Vehicle* vehicle);
|
static void vehicle_update_departing(Vehicle* vehicle);
|
||||||
static void vehicle_finish_departing(Vehicle* vehicle);
|
static void vehicle_finish_departing(Vehicle* vehicle);
|
||||||
static void vehicle_update_travelling(Vehicle* vehicle);
|
static void vehicle_update_travelling(Vehicle* vehicle);
|
||||||
|
@ -2002,7 +2001,7 @@ void Vehicle::Update()
|
||||||
UpdateWaitingForPassengers();
|
UpdateWaitingForPassengers();
|
||||||
break;
|
break;
|
||||||
case VEHICLE_STATUS_WAITING_TO_DEPART:
|
case VEHICLE_STATUS_WAITING_TO_DEPART:
|
||||||
vehicle_update_waiting_to_depart(this);
|
UpdateWaitingToDepart();
|
||||||
break;
|
break;
|
||||||
case VEHICLE_STATUS_CRASHING:
|
case VEHICLE_STATUS_CRASHING:
|
||||||
case VEHICLE_STATUS_CRASHED:
|
case VEHICLE_STATUS_CRASHED:
|
||||||
|
@ -2475,16 +2474,16 @@ static void vehicle_update_dodgems_mode(Vehicle* vehicle)
|
||||||
*
|
*
|
||||||
* rct2: 0x006D80BE
|
* rct2: 0x006D80BE
|
||||||
*/
|
*/
|
||||||
static void vehicle_update_waiting_to_depart(Vehicle* vehicle)
|
void Vehicle::UpdateWaitingToDepart()
|
||||||
{
|
{
|
||||||
auto ride = get_ride(vehicle->ride);
|
auto curRide = get_ride(ride);
|
||||||
if (ride == nullptr)
|
if (curRide == nullptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bool shouldBreak = false;
|
bool shouldBreak = false;
|
||||||
if (ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN)
|
if (curRide->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN)
|
||||||
{
|
{
|
||||||
switch (ride->breakdown_reason_pending)
|
switch (curRide->breakdown_reason_pending)
|
||||||
{
|
{
|
||||||
case BREAKDOWN_RESTRAINTS_STUCK_CLOSED:
|
case BREAKDOWN_RESTRAINTS_STUCK_CLOSED:
|
||||||
case BREAKDOWN_RESTRAINTS_STUCK_OPEN:
|
case BREAKDOWN_RESTRAINTS_STUCK_OPEN:
|
||||||
|
@ -2498,39 +2497,39 @@ static void vehicle_update_waiting_to_depart(Vehicle* vehicle)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool skipCheck = false;
|
bool skipCheck = false;
|
||||||
if (shouldBreak || ride->status != RIDE_STATUS_OPEN)
|
if (shouldBreak || curRide->status != RIDE_STATUS_OPEN)
|
||||||
{
|
{
|
||||||
if (ride->mode == RIDE_MODE_FORWARD_ROTATION || ride->mode == RIDE_MODE_BACKWARD_ROTATION)
|
if (curRide->mode == RIDE_MODE_FORWARD_ROTATION || curRide->mode == RIDE_MODE_BACKWARD_ROTATION)
|
||||||
{
|
{
|
||||||
uint8_t seat = ((-vehicle->vehicle_sprite_type) >> 3) & 0xF;
|
uint8_t seat = ((-vehicle_sprite_type) >> 3) & 0xF;
|
||||||
if (vehicle->peep[seat * 2] == SPRITE_INDEX_NULL)
|
if (peep[seat * 2] == SPRITE_INDEX_NULL)
|
||||||
{
|
{
|
||||||
if (vehicle->num_peeps == 0)
|
if (num_peeps == 0)
|
||||||
{
|
{
|
||||||
skipCheck = true;
|
skipCheck = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!ride_get_exit_location(ride, vehicle->current_station).isNull())
|
if (!ride_get_exit_location(curRide, current_station).isNull())
|
||||||
{
|
{
|
||||||
vehicle->SetState(VEHICLE_STATUS_UNLOADING_PASSENGERS);
|
SetState(VEHICLE_STATUS_UNLOADING_PASSENGERS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uint16_t spriteId = vehicle->sprite_index;
|
uint16_t spriteId = sprite_index;
|
||||||
for (Vehicle* curVehicle; spriteId != SPRITE_INDEX_NULL; spriteId = curVehicle->next_vehicle_on_train)
|
for (Vehicle* curVehicle; spriteId != SPRITE_INDEX_NULL; spriteId = curVehicle->next_vehicle_on_train)
|
||||||
{
|
{
|
||||||
curVehicle = GET_VEHICLE(spriteId);
|
curVehicle = GET_VEHICLE(spriteId);
|
||||||
|
|
||||||
if (curVehicle->num_peeps != 0)
|
if (curVehicle->num_peeps != 0)
|
||||||
{
|
{
|
||||||
if (!ride_get_exit_location(ride, vehicle->current_station).isNull())
|
if (!ride_get_exit_location(curRide, current_station).isNull())
|
||||||
{
|
{
|
||||||
vehicle->SetState(VEHICLE_STATUS_UNLOADING_PASSENGERS);
|
SetState(VEHICLE_STATUS_UNLOADING_PASSENGERS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -2541,17 +2540,17 @@ static void vehicle_update_waiting_to_depart(Vehicle* vehicle)
|
||||||
|
|
||||||
if (!skipCheck)
|
if (!skipCheck)
|
||||||
{
|
{
|
||||||
if (!(ride->stations[vehicle->current_station].Depart & STATION_DEPART_FLAG))
|
if (!(curRide->stations[current_station].Depart & STATION_DEPART_FLAG))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS))
|
if (ride_type_has_flag(curRide->type, RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS))
|
||||||
{
|
{
|
||||||
if (ride->depart_flags & RIDE_DEPART_SYNCHRONISE_WITH_ADJACENT_STATIONS)
|
if (curRide->depart_flags & RIDE_DEPART_SYNCHRONISE_WITH_ADJACENT_STATIONS)
|
||||||
{
|
{
|
||||||
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_WAIT_ON_ADJACENT)
|
if (update_flags & VEHICLE_UPDATE_FLAG_WAIT_ON_ADJACENT)
|
||||||
{
|
{
|
||||||
if (!vehicle_can_depart_synchronised(vehicle))
|
if (!vehicle_can_depart_synchronised(this))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2559,132 +2558,132 @@ static void vehicle_update_waiting_to_depart(Vehicle* vehicle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
vehicle->SetState(VEHICLE_STATUS_DEPARTING);
|
SetState(VEHICLE_STATUS_DEPARTING);
|
||||||
|
|
||||||
if (ride->lifecycle_flags & RIDE_LIFECYCLE_CABLE_LIFT)
|
if (curRide->lifecycle_flags & RIDE_LIFECYCLE_CABLE_LIFT)
|
||||||
{
|
{
|
||||||
CoordsXYE track;
|
CoordsXYE track;
|
||||||
int32_t z;
|
int32_t zUnused;
|
||||||
int32_t direction;
|
int32_t direction;
|
||||||
|
|
||||||
uint8_t trackDirection = (vehicle->track_direction & 0x3);
|
uint8_t trackDirection = (track_direction & 0x3);
|
||||||
if (track_block_get_next_from_zero(
|
if (track_block_get_next_from_zero(
|
||||||
vehicle->TrackLocation.x, vehicle->TrackLocation.y, vehicle->TrackLocation.z, ride, trackDirection, &track, &z,
|
TrackLocation.x, TrackLocation.y, TrackLocation.z, curRide, trackDirection, &track, &zUnused, &direction,
|
||||||
&direction, false))
|
false))
|
||||||
{
|
{
|
||||||
if (track.element->AsTrack()->HasCableLift())
|
if (track.element->AsTrack()->HasCableLift())
|
||||||
{
|
{
|
||||||
vehicle->SetState(VEHICLE_STATUS_WAITING_FOR_CABLE_LIFT, vehicle->sub_state);
|
SetState(VEHICLE_STATUS_WAITING_FOR_CABLE_LIFT, sub_state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (ride->mode)
|
switch (curRide->mode)
|
||||||
{
|
{
|
||||||
case RIDE_MODE_BUMPERCAR:
|
case RIDE_MODE_BUMPERCAR:
|
||||||
// Bumper mode uses sub_state / var_CE to tell how long
|
// Bumper mode uses sub_state / var_CE to tell how long
|
||||||
// the vehicle has been ridden.
|
// the vehicle has been ridden.
|
||||||
vehicle->SetState(VEHICLE_STATUS_TRAVELLING_DODGEMS);
|
SetState(VEHICLE_STATUS_TRAVELLING_DODGEMS);
|
||||||
vehicle->var_CE = 0;
|
var_CE = 0;
|
||||||
vehicle_update_dodgems_mode(vehicle);
|
vehicle_update_dodgems_mode(this);
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_SWING:
|
case RIDE_MODE_SWING:
|
||||||
vehicle->SetState(VEHICLE_STATUS_SWINGING);
|
SetState(VEHICLE_STATUS_SWINGING);
|
||||||
vehicle->var_CE = 0;
|
var_CE = 0;
|
||||||
vehicle->current_time = -1;
|
current_time = -1;
|
||||||
vehicle_update_swinging(vehicle);
|
vehicle_update_swinging(this);
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_ROTATION:
|
case RIDE_MODE_ROTATION:
|
||||||
vehicle->SetState(VEHICLE_STATUS_ROTATING);
|
SetState(VEHICLE_STATUS_ROTATING);
|
||||||
vehicle->var_CE = 0;
|
var_CE = 0;
|
||||||
vehicle->current_time = -1;
|
current_time = -1;
|
||||||
vehicle_update_rotating(vehicle);
|
vehicle_update_rotating(this);
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_FILM_AVENGING_AVIATORS:
|
case RIDE_MODE_FILM_AVENGING_AVIATORS:
|
||||||
vehicle->SetState(VEHICLE_STATUS_SIMULATOR_OPERATING);
|
SetState(VEHICLE_STATUS_SIMULATOR_OPERATING);
|
||||||
vehicle->current_time = -1;
|
current_time = -1;
|
||||||
vehicle_update_simulator_operating(vehicle);
|
vehicle_update_simulator_operating(this);
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_FILM_THRILL_RIDERS:
|
case RIDE_MODE_FILM_THRILL_RIDERS:
|
||||||
vehicle->SetState(VEHICLE_STATUS_SIMULATOR_OPERATING, 1);
|
SetState(VEHICLE_STATUS_SIMULATOR_OPERATING, 1);
|
||||||
vehicle->current_time = -1;
|
current_time = -1;
|
||||||
vehicle_update_simulator_operating(vehicle);
|
vehicle_update_simulator_operating(this);
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_BEGINNERS:
|
case RIDE_MODE_BEGINNERS:
|
||||||
case RIDE_MODE_INTENSE:
|
case RIDE_MODE_INTENSE:
|
||||||
case RIDE_MODE_BERSERK:
|
case RIDE_MODE_BERSERK:
|
||||||
vehicle->SetState(VEHICLE_STATUS_TOP_SPIN_OPERATING, vehicle->sub_state);
|
SetState(VEHICLE_STATUS_TOP_SPIN_OPERATING, sub_state);
|
||||||
|
|
||||||
switch (ride->mode)
|
switch (curRide->mode)
|
||||||
{
|
{
|
||||||
case RIDE_MODE_BEGINNERS:
|
case RIDE_MODE_BEGINNERS:
|
||||||
vehicle->sub_state = 0;
|
sub_state = 0;
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_INTENSE:
|
case RIDE_MODE_INTENSE:
|
||||||
vehicle->sub_state = 1;
|
sub_state = 1;
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_BERSERK:
|
case RIDE_MODE_BERSERK:
|
||||||
vehicle->sub_state = 2;
|
sub_state = 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
vehicle->current_time = -1;
|
current_time = -1;
|
||||||
vehicle->vehicle_sprite_type = 0;
|
vehicle_sprite_type = 0;
|
||||||
vehicle->bank_rotation = 0;
|
bank_rotation = 0;
|
||||||
vehicle_update_top_spin_operating(vehicle);
|
vehicle_update_top_spin_operating(this);
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_FORWARD_ROTATION:
|
case RIDE_MODE_FORWARD_ROTATION:
|
||||||
case RIDE_MODE_BACKWARD_ROTATION:
|
case RIDE_MODE_BACKWARD_ROTATION:
|
||||||
vehicle->SetState(VEHICLE_STATUS_FERRIS_WHEEL_ROTATING, vehicle->vehicle_sprite_type);
|
SetState(VEHICLE_STATUS_FERRIS_WHEEL_ROTATING, vehicle_sprite_type);
|
||||||
vehicle->var_CE = 0;
|
var_CE = 0;
|
||||||
vehicle->ferris_wheel_var_0 = 8;
|
ferris_wheel_var_0 = 8;
|
||||||
vehicle->ferris_wheel_var_1 = 8;
|
ferris_wheel_var_1 = 8;
|
||||||
vehicle_update_ferris_wheel_rotating(vehicle);
|
vehicle_update_ferris_wheel_rotating(this);
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_3D_FILM_MOUSE_TAILS:
|
case RIDE_MODE_3D_FILM_MOUSE_TAILS:
|
||||||
case RIDE_MODE_3D_FILM_STORM_CHASERS:
|
case RIDE_MODE_3D_FILM_STORM_CHASERS:
|
||||||
case RIDE_MODE_3D_FILM_SPACE_RAIDERS:
|
case RIDE_MODE_3D_FILM_SPACE_RAIDERS:
|
||||||
vehicle->SetState(VEHICLE_STATUS_SHOWING_FILM, vehicle->sub_state);
|
SetState(VEHICLE_STATUS_SHOWING_FILM, sub_state);
|
||||||
switch (ride->mode)
|
switch (curRide->mode)
|
||||||
{
|
{
|
||||||
case RIDE_MODE_3D_FILM_MOUSE_TAILS:
|
case RIDE_MODE_3D_FILM_MOUSE_TAILS:
|
||||||
vehicle->sub_state = 0;
|
sub_state = 0;
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_3D_FILM_STORM_CHASERS:
|
case RIDE_MODE_3D_FILM_STORM_CHASERS:
|
||||||
vehicle->sub_state = 1;
|
sub_state = 1;
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_3D_FILM_SPACE_RAIDERS:
|
case RIDE_MODE_3D_FILM_SPACE_RAIDERS:
|
||||||
vehicle->sub_state = 2;
|
sub_state = 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
vehicle->current_time = -1;
|
current_time = -1;
|
||||||
vehicle_update_showing_film(vehicle);
|
vehicle_update_showing_film(this);
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_CIRCUS_SHOW:
|
case RIDE_MODE_CIRCUS_SHOW:
|
||||||
vehicle->SetState(VEHICLE_STATUS_DOING_CIRCUS_SHOW);
|
SetState(VEHICLE_STATUS_DOING_CIRCUS_SHOW);
|
||||||
vehicle->current_time = -1;
|
current_time = -1;
|
||||||
vehicle_update_doing_circus_show(vehicle);
|
vehicle_update_doing_circus_show(this);
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_SPACE_RINGS:
|
case RIDE_MODE_SPACE_RINGS:
|
||||||
vehicle->SetState(VEHICLE_STATUS_SPACE_RINGS_OPERATING);
|
SetState(VEHICLE_STATUS_SPACE_RINGS_OPERATING);
|
||||||
vehicle->vehicle_sprite_type = 0;
|
vehicle_sprite_type = 0;
|
||||||
vehicle->current_time = -1;
|
current_time = -1;
|
||||||
vehicle_update_space_rings_operating(vehicle);
|
vehicle_update_space_rings_operating(this);
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_HAUNTED_HOUSE:
|
case RIDE_MODE_HAUNTED_HOUSE:
|
||||||
vehicle->SetState(VEHICLE_STATUS_HAUNTED_HOUSE_OPERATING);
|
SetState(VEHICLE_STATUS_HAUNTED_HOUSE_OPERATING);
|
||||||
vehicle->vehicle_sprite_type = 0;
|
vehicle_sprite_type = 0;
|
||||||
vehicle->current_time = -1;
|
current_time = -1;
|
||||||
vehicle_update_haunted_house_operating(vehicle);
|
vehicle_update_haunted_house_operating(this);
|
||||||
break;
|
break;
|
||||||
case RIDE_MODE_CROOKED_HOUSE:
|
case RIDE_MODE_CROOKED_HOUSE:
|
||||||
vehicle->SetState(VEHICLE_STATUS_CROOKED_HOUSE_OPERATING);
|
SetState(VEHICLE_STATUS_CROOKED_HOUSE_OPERATING);
|
||||||
vehicle->vehicle_sprite_type = 0;
|
vehicle_sprite_type = 0;
|
||||||
vehicle->current_time = -1;
|
current_time = -1;
|
||||||
vehicle_update_crooked_house_operating(vehicle);
|
vehicle_update_crooked_house_operating(this);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
vehicle->SetState(vehicle->status);
|
SetState(status);
|
||||||
vehicle->var_CE = 0;
|
var_CE = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -310,6 +310,7 @@ private:
|
||||||
void CableLiftUpdate();
|
void CableLiftUpdate();
|
||||||
void UpdateMovingToEndOfStation();
|
void UpdateMovingToEndOfStation();
|
||||||
void UpdateWaitingForPassengers();
|
void UpdateWaitingForPassengers();
|
||||||
|
void UpdateWaitingToDepart();
|
||||||
};
|
};
|
||||||
|
|
||||||
struct train_ref
|
struct train_ref
|
||||||
|
|
Loading…
Reference in New Issue