mirror of https://github.com/OpenRCT2/OpenRCT2.git
Part of #9473: vehicle_update_travelling to Vehicle::UpdateTravelling
This commit is contained in:
parent
8e3d9c6f8a
commit
f6af166f34
|
@ -51,7 +51,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_finish_departing(Vehicle* vehicle);
|
static void vehicle_finish_departing(Vehicle* vehicle);
|
||||||
static void vehicle_update_travelling(Vehicle* vehicle);
|
|
||||||
static void vehicle_update_travelling_boat(Vehicle* vehicle);
|
static void vehicle_update_travelling_boat(Vehicle* vehicle);
|
||||||
static void vehicle_update_motion_boat_hire(Vehicle* vehicle);
|
static void vehicle_update_motion_boat_hire(Vehicle* vehicle);
|
||||||
static void vehicle_update_boat_location(Vehicle* vehicle);
|
static void vehicle_update_boat_location(Vehicle* vehicle);
|
||||||
|
@ -2027,7 +2026,7 @@ void Vehicle::Update()
|
||||||
UpdateDeparting();
|
UpdateDeparting();
|
||||||
break;
|
break;
|
||||||
case VEHICLE_STATUS_TRAVELLING:
|
case VEHICLE_STATUS_TRAVELLING:
|
||||||
vehicle_update_travelling(this);
|
UpdateTravelling();
|
||||||
break;
|
break;
|
||||||
case VEHICLE_STATUS_TRAVELLING_CABLE_LIFT:
|
case VEHICLE_STATUS_TRAVELLING_CABLE_LIFT:
|
||||||
vehicle_update_travelling_cable_lift(this);
|
vehicle_update_travelling_cable_lift(this);
|
||||||
|
@ -3655,134 +3654,134 @@ static void vehicle_update_crash_setup(Vehicle* vehicle)
|
||||||
*
|
*
|
||||||
* rct2: 0x006D8937
|
* rct2: 0x006D8937
|
||||||
*/
|
*/
|
||||||
static void vehicle_update_travelling(Vehicle* vehicle)
|
void Vehicle::UpdateTravelling()
|
||||||
{
|
{
|
||||||
vehicle_check_if_missing(vehicle);
|
vehicle_check_if_missing(this);
|
||||||
|
|
||||||
auto ride = get_ride(vehicle->ride);
|
auto curRide = get_ride(ride);
|
||||||
if (ride == nullptr || (_vehicleBreakdown == 0 && ride->mode == RIDE_MODE_ROTATING_LIFT))
|
if (curRide == nullptr || (_vehicleBreakdown == 0 && curRide->mode == RIDE_MODE_ROTATING_LIFT))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (vehicle->sub_state == 2)
|
if (sub_state == 2)
|
||||||
{
|
{
|
||||||
vehicle->velocity = 0;
|
velocity = 0;
|
||||||
vehicle->acceleration = 0;
|
acceleration = 0;
|
||||||
vehicle->var_C0--;
|
var_C0--;
|
||||||
if (vehicle->var_C0 == 0)
|
if (var_C0 == 0)
|
||||||
vehicle->sub_state = 0;
|
sub_state = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ride->mode == RIDE_MODE_FREEFALL_DROP && vehicle->animation_frame != 0)
|
if (curRide->mode == RIDE_MODE_FREEFALL_DROP && animation_frame != 0)
|
||||||
{
|
{
|
||||||
vehicle->animation_frame++;
|
animation_frame++;
|
||||||
vehicle->velocity = 0;
|
velocity = 0;
|
||||||
vehicle->acceleration = 0;
|
acceleration = 0;
|
||||||
vehicle->Invalidate();
|
Invalidate();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t flags = vehicle_update_track_motion(vehicle, nullptr);
|
uint32_t curFlags = vehicle_update_track_motion(this, nullptr);
|
||||||
|
|
||||||
bool skipCheck = false;
|
bool skipCheck = false;
|
||||||
if (flags & (VEHICLE_UPDATE_MOTION_TRACK_FLAG_8 | VEHICLE_UPDATE_MOTION_TRACK_FLAG_9)
|
if (curFlags & (VEHICLE_UPDATE_MOTION_TRACK_FLAG_8 | VEHICLE_UPDATE_MOTION_TRACK_FLAG_9)
|
||||||
&& ride->mode == RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE && vehicle->sub_state == 0)
|
&& curRide->mode == RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE && sub_state == 0)
|
||||||
{
|
{
|
||||||
vehicle->sub_state = 1;
|
sub_state = 1;
|
||||||
vehicle->velocity = 0;
|
velocity = 0;
|
||||||
skipCheck = true;
|
skipCheck = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!skipCheck)
|
if (!skipCheck)
|
||||||
{
|
{
|
||||||
if (flags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_DERAILED)
|
if (curFlags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_DERAILED)
|
||||||
{
|
{
|
||||||
vehicle_update_crash_setup(vehicle);
|
vehicle_update_crash_setup(this);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_COLLISION)
|
if (curFlags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_COLLISION)
|
||||||
{
|
{
|
||||||
vehicle_update_collision_setup(vehicle);
|
vehicle_update_collision_setup(this);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & (VEHICLE_UPDATE_MOTION_TRACK_FLAG_5 | VEHICLE_UPDATE_MOTION_TRACK_FLAG_12))
|
if (curFlags & (VEHICLE_UPDATE_MOTION_TRACK_FLAG_5 | VEHICLE_UPDATE_MOTION_TRACK_FLAG_12))
|
||||||
{
|
{
|
||||||
if (ride->mode == RIDE_MODE_ROTATING_LIFT)
|
if (curRide->mode == RIDE_MODE_ROTATING_LIFT)
|
||||||
{
|
{
|
||||||
if (vehicle->sub_state <= 1)
|
if (sub_state <= 1)
|
||||||
{
|
{
|
||||||
vehicle->SetState(VEHICLE_STATUS_ARRIVING, 1);
|
SetState(VEHICLE_STATUS_ARRIVING, 1);
|
||||||
vehicle->var_C0 = 0;
|
var_C0 = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ride->mode == RIDE_MODE_BOAT_HIRE)
|
else if (curRide->mode == RIDE_MODE_BOAT_HIRE)
|
||||||
{
|
{
|
||||||
vehicle_update_travelling_boat_hire_setup(vehicle);
|
vehicle_update_travelling_boat_hire_setup(this);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (ride->mode == RIDE_MODE_SHUTTLE)
|
else if (curRide->mode == RIDE_MODE_SHUTTLE)
|
||||||
{
|
{
|
||||||
vehicle->update_flags ^= VEHICLE_UPDATE_FLAG_REVERSING_SHUTTLE;
|
update_flags ^= VEHICLE_UPDATE_FLAG_REVERSING_SHUTTLE;
|
||||||
vehicle->velocity = 0;
|
velocity = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (vehicle->sub_state != 0)
|
if (sub_state != 0)
|
||||||
{
|
{
|
||||||
vehicle_update_crash_setup(vehicle);
|
vehicle_update_crash_setup(this);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
vehicle->sub_state = 1;
|
sub_state = 1;
|
||||||
vehicle->velocity = 0;
|
velocity = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ride->mode == RIDE_MODE_ROTATING_LIFT && vehicle->sub_state <= 1)
|
if (curRide->mode == RIDE_MODE_ROTATING_LIFT && sub_state <= 1)
|
||||||
{
|
{
|
||||||
if (vehicle->sub_state == 0)
|
if (sub_state == 0)
|
||||||
{
|
{
|
||||||
if (vehicle->velocity >= -131940)
|
if (velocity >= -131940)
|
||||||
vehicle->acceleration = -3298;
|
acceleration = -3298;
|
||||||
vehicle->velocity = std::max(vehicle->velocity, -131940);
|
velocity = std::max(velocity, -131940);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (vehicle_current_tower_element_is_top(vehicle))
|
if (vehicle_current_tower_element_is_top(this))
|
||||||
{
|
{
|
||||||
vehicle->velocity = 0;
|
velocity = 0;
|
||||||
vehicle->sub_state = 2;
|
sub_state = 2;
|
||||||
vehicle->var_C0 = 150;
|
var_C0 = 150;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (vehicle->velocity <= 131940)
|
if (velocity <= 131940)
|
||||||
vehicle->acceleration = 3298;
|
acceleration = 3298;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_ON_LIFT_HILL)
|
if (curFlags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_ON_LIFT_HILL)
|
||||||
{
|
{
|
||||||
if (ride->mode == RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE)
|
if (curRide->mode == RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE)
|
||||||
{
|
{
|
||||||
if (vehicle->sub_state == 0)
|
if (sub_state == 0)
|
||||||
{
|
{
|
||||||
if (vehicle->velocity != 0)
|
if (velocity != 0)
|
||||||
vehicle->sound2_flags |= VEHICLE_SOUND2_FLAGS_LIFT_HILL;
|
sound2_flags |= VEHICLE_SOUND2_FLAGS_LIFT_HILL;
|
||||||
|
|
||||||
if (!(vehicle->update_flags & VEHICLE_UPDATE_FLAG_12))
|
if (!(update_flags & VEHICLE_UPDATE_FLAG_12))
|
||||||
{
|
{
|
||||||
if (vehicle->velocity >= ride->lift_hill_speed * -31079)
|
if (velocity >= curRide->lift_hill_speed * -31079)
|
||||||
{
|
{
|
||||||
vehicle->acceleration = -15539;
|
acceleration = -15539;
|
||||||
|
|
||||||
if (_vehicleBreakdown == 0)
|
if (_vehicleBreakdown == 0)
|
||||||
{
|
{
|
||||||
vehicle->sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL;
|
sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL;
|
||||||
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_ZERO_VELOCITY;
|
update_flags |= VEHICLE_UPDATE_FLAG_ZERO_VELOCITY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3790,43 +3789,43 @@ static void vehicle_update_travelling(Vehicle* vehicle)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vehicle->sound2_flags |= VEHICLE_SOUND2_FLAGS_LIFT_HILL;
|
sound2_flags |= VEHICLE_SOUND2_FLAGS_LIFT_HILL;
|
||||||
if (vehicle->velocity <= ride->lift_hill_speed * 31079)
|
if (velocity <= curRide->lift_hill_speed * 31079)
|
||||||
{
|
{
|
||||||
vehicle->acceleration = 15539;
|
acceleration = 15539;
|
||||||
if (vehicle->velocity != 0)
|
if (velocity != 0)
|
||||||
{
|
{
|
||||||
if (_vehicleBreakdown == 0)
|
if (_vehicleBreakdown == 0)
|
||||||
{
|
{
|
||||||
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_ZERO_VELOCITY;
|
update_flags |= VEHICLE_UPDATE_FLAG_ZERO_VELOCITY;
|
||||||
vehicle->sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL;
|
sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vehicle->sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL;
|
sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(flags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_3))
|
if (!(curFlags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_3))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (ride->mode == RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE && vehicle->velocity >= 0
|
if (curRide->mode == RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE && velocity >= 0
|
||||||
&& !(vehicle->update_flags & VEHICLE_UPDATE_FLAG_12))
|
&& !(update_flags & VEHICLE_UPDATE_FLAG_12))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ride->mode == RIDE_MODE_POWERED_LAUNCH_PASSTROUGH && vehicle->velocity < 0)
|
if (curRide->mode == RIDE_MODE_POWERED_LAUNCH_PASSTROUGH && velocity < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
vehicle->SetState(VEHICLE_STATUS_ARRIVING);
|
SetState(VEHICLE_STATUS_ARRIVING);
|
||||||
vehicle->current_station = _vehicleStationIndex;
|
current_station = _vehicleStationIndex;
|
||||||
vehicle->var_C0 = 0;
|
var_C0 = 0;
|
||||||
if (vehicle->velocity < 0)
|
if (velocity < 0)
|
||||||
vehicle->sub_state = 1;
|
sub_state = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -322,6 +322,7 @@ private:
|
||||||
void UpdateCrookedHouseOperating();
|
void UpdateCrookedHouseOperating();
|
||||||
void UpdateRotating();
|
void UpdateRotating();
|
||||||
void UpdateDeparting();
|
void UpdateDeparting();
|
||||||
|
void UpdateTravelling();
|
||||||
};
|
};
|
||||||
|
|
||||||
struct train_ref
|
struct train_ref
|
||||||
|
|
Loading…
Reference in New Issue