mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #11584 from hdpoliveira/vehicle_update_9473_04
Vehicle update 9473 04
This commit is contained in:
commit
c4a31ec236
|
@ -82,7 +82,7 @@ int32_t viewport_interaction_get_item_left(const ScreenCoordsXY& screenCoords, v
|
||||||
case SPRITE_IDENTIFIER_VEHICLE:
|
case SPRITE_IDENTIFIER_VEHICLE:
|
||||||
vehicle = &(sprite->vehicle);
|
vehicle = &(sprite->vehicle);
|
||||||
if (vehicle->ride_subtype != RIDE_ENTRY_INDEX_NULL)
|
if (vehicle->ride_subtype != RIDE_ENTRY_INDEX_NULL)
|
||||||
vehicle_set_map_toolbar(vehicle);
|
vehicle->SetMapToolbar();
|
||||||
else
|
else
|
||||||
info->type = VIEWPORT_INTERACTION_ITEM_NONE;
|
info->type = VIEWPORT_INTERACTION_ITEM_NONE;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -2596,7 +2596,7 @@ bool Guest::FindVehicleToEnter(Ride* ride, std::vector<uint8_t>& car_array)
|
||||||
vehicle = GET_VEHICLE(vehicle_id);
|
vehicle = GET_VEHICLE(vehicle_id);
|
||||||
|
|
||||||
uint8_t num_seats = vehicle->num_seats;
|
uint8_t num_seats = vehicle->num_seats;
|
||||||
if (vehicle_is_used_in_pairs(vehicle))
|
if (vehicle->IsUsedInPairs())
|
||||||
{
|
{
|
||||||
if (vehicle->next_free_seat & 1)
|
if (vehicle->next_free_seat & 1)
|
||||||
{
|
{
|
||||||
|
@ -3992,7 +3992,7 @@ void Guest::UpdateRideFreeVehicleCheck()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!vehicle_is_used_in_pairs(vehicle))
|
if (!vehicle->IsUsedInPairs())
|
||||||
{
|
{
|
||||||
UpdateRideFreeVehicleEnterRide(ride);
|
UpdateRideFreeVehicleEnterRide(ride);
|
||||||
return;
|
return;
|
||||||
|
@ -4064,7 +4064,7 @@ void Guest::UpdateRideEnterVehicle()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vehicle_is_used_in_pairs(vehicle))
|
if (vehicle->IsUsedInPairs())
|
||||||
{
|
{
|
||||||
auto* seatedPeep = GET_PEEP(vehicle->peep[current_seat ^ 1]);
|
auto* seatedPeep = GET_PEEP(vehicle->peep[current_seat ^ 1]);
|
||||||
if (seatedPeep != nullptr)
|
if (seatedPeep != nullptr)
|
||||||
|
|
|
@ -2874,7 +2874,7 @@ static void ride_measurement_update(Ride& ride, RideMeasurement& measurement)
|
||||||
|
|
||||||
if (measurement.flags & RIDE_MEASUREMENT_FLAG_G_FORCES)
|
if (measurement.flags & RIDE_MEASUREMENT_FLAG_G_FORCES)
|
||||||
{
|
{
|
||||||
auto gForces = vehicle_get_g_forces(vehicle);
|
auto gForces = vehicle->GetGForces();
|
||||||
gForces.VerticalG = std::clamp(gForces.VerticalG / 8, -127, 127);
|
gForces.VerticalG = std::clamp(gForces.VerticalG / 8, -127, 127);
|
||||||
gForces.LateralG = std::clamp(gForces.LateralG / 8, -127, 127);
|
gForces.LateralG = std::clamp(gForces.LateralG / 8, -127, 127);
|
||||||
|
|
||||||
|
|
|
@ -1559,7 +1559,7 @@ void Vehicle::UpdateMeasurements()
|
||||||
|
|
||||||
if (ride_type_has_flag(curRide->type, RIDE_TYPE_FLAG_HAS_G_FORCES))
|
if (ride_type_has_flag(curRide->type, RIDE_TYPE_FLAG_HAS_G_FORCES))
|
||||||
{
|
{
|
||||||
auto gForces = vehicle_get_g_forces(this);
|
auto gForces = GetGForces();
|
||||||
gForces.VerticalG += curRide->previous_vertical_g;
|
gForces.VerticalG += curRide->previous_vertical_g;
|
||||||
gForces.LateralG += curRide->previous_lateral_g;
|
gForces.LateralG += curRide->previous_lateral_g;
|
||||||
gForces.VerticalG /= 2;
|
gForces.VerticalG /= 2;
|
||||||
|
@ -5652,15 +5652,15 @@ produceScream:
|
||||||
* dx: lateralG
|
* dx: lateralG
|
||||||
* esi: vehicle
|
* esi: vehicle
|
||||||
*/
|
*/
|
||||||
GForces vehicle_get_g_forces(const Vehicle* vehicle)
|
GForces Vehicle::GetGForces() const
|
||||||
{
|
{
|
||||||
int32_t gForceVert = ((static_cast<int64_t>(0x280000)) * Unk9A37E4[vehicle->vehicle_sprite_type]) >> 32;
|
int32_t gForceVert = ((static_cast<int64_t>(0x280000)) * Unk9A37E4[vehicle_sprite_type]) >> 32;
|
||||||
gForceVert = ((static_cast<int64_t>(gForceVert)) * Unk9A39C4[vehicle->bank_rotation]) >> 32;
|
gForceVert = ((static_cast<int64_t>(gForceVert)) * Unk9A39C4[bank_rotation]) >> 32;
|
||||||
int32_t lateralFactor = 0, vertFactor = 0;
|
int32_t lateralFactor = 0, vertFactor = 0;
|
||||||
|
|
||||||
// Note shr has meant some of the below functions cast a known negative number to
|
// Note shr has meant some of the below functions cast a known negative number to
|
||||||
// unsigned. Possibly an original bug but will be left implemented.
|
// unsigned. Possibly an original bug but will be left implemented.
|
||||||
switch (vehicle->track_type >> 2)
|
switch (track_type >> 2)
|
||||||
{
|
{
|
||||||
case TRACK_ELEM_FLAT:
|
case TRACK_ELEM_FLAT:
|
||||||
case TRACK_ELEM_END_STATION:
|
case TRACK_ELEM_END_STATION:
|
||||||
|
@ -5836,17 +5836,17 @@ GForces vehicle_get_g_forces(const Vehicle* vehicle)
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_S_BEND_LEFT:
|
case TRACK_ELEM_S_BEND_LEFT:
|
||||||
case TRACK_ELEM_S_BEND_LEFT_COVERED:
|
case TRACK_ELEM_S_BEND_LEFT_COVERED:
|
||||||
lateralFactor = (vehicle->track_progress < 48) ? 98 : -98;
|
lateralFactor = (track_progress < 48) ? 98 : -98;
|
||||||
// 6d75FF
|
// 6d75FF
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_S_BEND_RIGHT:
|
case TRACK_ELEM_S_BEND_RIGHT:
|
||||||
case TRACK_ELEM_S_BEND_RIGHT_COVERED:
|
case TRACK_ELEM_S_BEND_RIGHT_COVERED:
|
||||||
lateralFactor = (vehicle->track_progress < 48) ? -98 : 98;
|
lateralFactor = (track_progress < 48) ? -98 : 98;
|
||||||
// 6d7608
|
// 6d7608
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_LEFT_VERTICAL_LOOP:
|
case TRACK_ELEM_LEFT_VERTICAL_LOOP:
|
||||||
case TRACK_ELEM_RIGHT_VERTICAL_LOOP:
|
case TRACK_ELEM_RIGHT_VERTICAL_LOOP:
|
||||||
vertFactor = (abs(vehicle->track_progress - 155) / 2) + 28;
|
vertFactor = (abs(track_progress - 155) / 2) + 28;
|
||||||
// 6d7690
|
// 6d7690
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES:
|
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES:
|
||||||
|
@ -5889,12 +5889,12 @@ GForces vehicle_get_g_forces(const Vehicle* vehicle)
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_HALF_LOOP_UP:
|
case TRACK_ELEM_HALF_LOOP_UP:
|
||||||
case TRACK_ELEM_FLYER_HALF_LOOP_UP:
|
case TRACK_ELEM_FLYER_HALF_LOOP_UP:
|
||||||
vertFactor = ((static_cast<uint16_t>(-(vehicle->track_progress - 155))) / 2) + 28;
|
vertFactor = ((static_cast<uint16_t>(-(track_progress - 155))) / 2) + 28;
|
||||||
// 6d763E
|
// 6d763E
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_HALF_LOOP_DOWN:
|
case TRACK_ELEM_HALF_LOOP_DOWN:
|
||||||
case TRACK_ELEM_FLYER_HALF_LOOP_DOWN:
|
case TRACK_ELEM_FLYER_HALF_LOOP_DOWN:
|
||||||
vertFactor = (vehicle->track_progress / 2) + 28;
|
vertFactor = (track_progress / 2) + 28;
|
||||||
// 6d7656
|
// 6d7656
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_LEFT_CORKSCREW_UP:
|
case TRACK_ELEM_LEFT_CORKSCREW_UP:
|
||||||
|
@ -5936,16 +5936,16 @@ GForces vehicle_get_g_forces(const Vehicle* vehicle)
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_WATER_SPLASH:
|
case TRACK_ELEM_WATER_SPLASH:
|
||||||
vertFactor = -150;
|
vertFactor = -150;
|
||||||
if (vehicle->track_progress < 32)
|
if (track_progress < 32)
|
||||||
break;
|
break;
|
||||||
vertFactor = 150;
|
vertFactor = 150;
|
||||||
if (vehicle->track_progress < 64)
|
if (track_progress < 64)
|
||||||
break;
|
break;
|
||||||
vertFactor = 0;
|
vertFactor = 0;
|
||||||
if (vehicle->track_progress < 96)
|
if (track_progress < 96)
|
||||||
break;
|
break;
|
||||||
vertFactor = 150;
|
vertFactor = 150;
|
||||||
if (vehicle->track_progress < 128)
|
if (track_progress < 128)
|
||||||
break;
|
break;
|
||||||
vertFactor = -150;
|
vertFactor = -150;
|
||||||
// 6d7408
|
// 6d7408
|
||||||
|
@ -6048,63 +6048,63 @@ GForces vehicle_get_g_forces(const Vehicle* vehicle)
|
||||||
// 6d75A8
|
// 6d75A8
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP:
|
case TRACK_ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP:
|
||||||
vertFactor = -(vehicle->track_progress / 2) + 134;
|
vertFactor = -(track_progress / 2) + 134;
|
||||||
lateralFactor = 90;
|
lateralFactor = 90;
|
||||||
// 6d771C
|
// 6d771C
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP:
|
case TRACK_ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP:
|
||||||
vertFactor = -(vehicle->track_progress / 2) + 134;
|
vertFactor = -(track_progress / 2) + 134;
|
||||||
lateralFactor = -90;
|
lateralFactor = -90;
|
||||||
// 6D7746
|
// 6D7746
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK:
|
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK:
|
||||||
vertFactor = -(vehicle->track_progress / 2) + 134;
|
vertFactor = -(track_progress / 2) + 134;
|
||||||
lateralFactor = 90;
|
lateralFactor = 90;
|
||||||
// 6D7731 identical to 6d771c
|
// 6D7731 identical to 6d771c
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK:
|
case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK:
|
||||||
vertFactor = -(vehicle->track_progress / 2) + 134;
|
vertFactor = -(track_progress / 2) + 134;
|
||||||
lateralFactor = -90;
|
lateralFactor = -90;
|
||||||
// 6D775B identical to 6d7746
|
// 6D775B identical to 6d7746
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_LEFT_LARGE_HALF_LOOP_UP:
|
case TRACK_ELEM_LEFT_LARGE_HALF_LOOP_UP:
|
||||||
case TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_UP:
|
case TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_UP:
|
||||||
vertFactor = ((static_cast<uint16_t>(-(vehicle->track_progress - 311))) / 4) + 46;
|
vertFactor = ((static_cast<uint16_t>(-(track_progress - 311))) / 4) + 46;
|
||||||
// 6d7666
|
// 6d7666
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_DOWN:
|
case TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_DOWN:
|
||||||
case TRACK_ELEM_LEFT_LARGE_HALF_LOOP_DOWN:
|
case TRACK_ELEM_LEFT_LARGE_HALF_LOOP_DOWN:
|
||||||
vertFactor = (vehicle->track_progress / 4) + 46;
|
vertFactor = (track_progress / 4) + 46;
|
||||||
// 6d767F
|
// 6d767F
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_HEARTLINE_TRANSFER_UP:
|
case TRACK_ELEM_HEARTLINE_TRANSFER_UP:
|
||||||
vertFactor = 103;
|
vertFactor = 103;
|
||||||
if (vehicle->track_progress < 32)
|
if (track_progress < 32)
|
||||||
break;
|
break;
|
||||||
vertFactor = -103;
|
vertFactor = -103;
|
||||||
if (vehicle->track_progress < 64)
|
if (track_progress < 64)
|
||||||
break;
|
break;
|
||||||
vertFactor = 0;
|
vertFactor = 0;
|
||||||
if (vehicle->track_progress < 96)
|
if (track_progress < 96)
|
||||||
break;
|
break;
|
||||||
vertFactor = 103;
|
vertFactor = 103;
|
||||||
if (vehicle->track_progress < 128)
|
if (track_progress < 128)
|
||||||
break;
|
break;
|
||||||
vertFactor = -103;
|
vertFactor = -103;
|
||||||
// 6d74A0
|
// 6d74A0
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_HEARTLINE_TRANSFER_DOWN:
|
case TRACK_ELEM_HEARTLINE_TRANSFER_DOWN:
|
||||||
vertFactor = -103;
|
vertFactor = -103;
|
||||||
if (vehicle->track_progress < 32)
|
if (track_progress < 32)
|
||||||
break;
|
break;
|
||||||
vertFactor = 103;
|
vertFactor = 103;
|
||||||
if (vehicle->track_progress < 64)
|
if (track_progress < 64)
|
||||||
break;
|
break;
|
||||||
vertFactor = 0;
|
vertFactor = 0;
|
||||||
if (vehicle->track_progress < 96)
|
if (track_progress < 96)
|
||||||
break;
|
break;
|
||||||
vertFactor = -103;
|
vertFactor = -103;
|
||||||
if (vehicle->track_progress < 128)
|
if (track_progress < 128)
|
||||||
break;
|
break;
|
||||||
vertFactor = 103;
|
vertFactor = 103;
|
||||||
// 6D74CA
|
// 6D74CA
|
||||||
|
@ -6112,13 +6112,13 @@ GForces vehicle_get_g_forces(const Vehicle* vehicle)
|
||||||
case TRACK_ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN:
|
case TRACK_ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN:
|
||||||
case TRACK_ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN:
|
case TRACK_ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN:
|
||||||
case TRACK_ELEM_MULTIDIM_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP:
|
case TRACK_ELEM_MULTIDIM_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP:
|
||||||
vertFactor = (vehicle->track_progress / 4) + 55;
|
vertFactor = (track_progress / 4) + 55;
|
||||||
// 6d762D
|
// 6d762D
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP:
|
case TRACK_ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP:
|
||||||
case TRACK_ELEM_MULTIDIM_90_DEG_UP_TO_INVERTED_FLAT_QUARTER_LOOP:
|
case TRACK_ELEM_MULTIDIM_90_DEG_UP_TO_INVERTED_FLAT_QUARTER_LOOP:
|
||||||
case TRACK_ELEM_MULTIDIM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP:
|
case TRACK_ELEM_MULTIDIM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP:
|
||||||
vertFactor = ((static_cast<uint16_t>(-(vehicle->track_progress - 137))) / 4) + 55;
|
vertFactor = ((static_cast<uint16_t>(-(track_progress - 137))) / 4) + 55;
|
||||||
// 6D7614
|
// 6D7614
|
||||||
break;
|
break;
|
||||||
case TRACK_ELEM_AIR_THRUST_TOP_CAP:
|
case TRACK_ELEM_AIR_THRUST_TOP_CAP:
|
||||||
|
@ -6155,12 +6155,12 @@ GForces vehicle_get_g_forces(const Vehicle* vehicle)
|
||||||
|
|
||||||
if (vertFactor != 0)
|
if (vertFactor != 0)
|
||||||
{
|
{
|
||||||
gForceVert += abs(vehicle->velocity) * 98 / vertFactor;
|
gForceVert += abs(velocity) * 98 / vertFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lateralFactor != 0)
|
if (lateralFactor != 0)
|
||||||
{
|
{
|
||||||
gForceLateral += abs(vehicle->velocity) * 98 / lateralFactor;
|
gForceLateral += abs(velocity) * 98 / lateralFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
gForceVert *= 10;
|
gForceVert *= 10;
|
||||||
|
@ -6170,25 +6170,25 @@ GForces vehicle_get_g_forces(const Vehicle* vehicle)
|
||||||
return { static_cast<int16_t>(gForceVert & 0xFFFF), static_cast<int16_t>(gForceLateral & 0xFFFF) };
|
return { static_cast<int16_t>(gForceVert & 0xFFFF), static_cast<int16_t>(gForceLateral & 0xFFFF) };
|
||||||
}
|
}
|
||||||
|
|
||||||
void vehicle_set_map_toolbar(const Vehicle* vehicle)
|
void Vehicle::SetMapToolbar() const
|
||||||
{
|
{
|
||||||
auto ride = get_ride(vehicle->ride);
|
auto curRide = get_ride(ride);
|
||||||
if (ride != nullptr)
|
if (curRide != nullptr)
|
||||||
{
|
{
|
||||||
vehicle = vehicle->GetHead();
|
const Vehicle* vehicle = GetHead();
|
||||||
|
|
||||||
int32_t vehicleIndex;
|
int32_t vehicleIndex;
|
||||||
for (vehicleIndex = 0; vehicleIndex < 32; vehicleIndex++)
|
for (vehicleIndex = 0; vehicleIndex < 32; vehicleIndex++)
|
||||||
if (ride->vehicles[vehicleIndex] == vehicle->sprite_index)
|
if (curRide->vehicles[vehicleIndex] == vehicle->sprite_index)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
auto ft = Formatter::MapTooltip();
|
auto ft = Formatter::MapTooltip();
|
||||||
ft.Add<rct_string_id>(STR_RIDE_MAP_TIP);
|
ft.Add<rct_string_id>(STR_RIDE_MAP_TIP);
|
||||||
ft.Add<rct_string_id>(STR_MAP_TOOLTIP_STRINGID_STRINGID);
|
ft.Add<rct_string_id>(STR_MAP_TOOLTIP_STRINGID_STRINGID);
|
||||||
ride->FormatNameTo(ft);
|
curRide->FormatNameTo(ft);
|
||||||
ft.Add<rct_string_id>(RideComponentNames[RideTypeDescriptors[ride->type].NameConvention.vehicle].capitalised);
|
ft.Add<rct_string_id>(RideComponentNames[RideTypeDescriptors[curRide->type].NameConvention.vehicle].capitalised);
|
||||||
ft.Add<uint16_t>(vehicleIndex + 1);
|
ft.Add<uint16_t>(vehicleIndex + 1);
|
||||||
ride->FormatStatusTo(ft);
|
curRide->FormatStatusTo(ft);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6224,9 +6224,9 @@ Vehicle* Vehicle::TrainTail() const
|
||||||
return const_cast<Vehicle*>(vehicle);
|
return const_cast<Vehicle*>(vehicle);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t vehicle_is_used_in_pairs(const Vehicle* vehicle)
|
int32_t Vehicle::IsUsedInPairs() const
|
||||||
{
|
{
|
||||||
return vehicle->num_seats & VEHICLE_SEAT_PAIR_FLAG;
|
return num_seats & VEHICLE_SEAT_PAIR_FLAG;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -6493,7 +6493,7 @@ static void vehicle_update_track_motion_up_stop_check(Vehicle* vehicle)
|
||||||
int32_t trackType = vehicle->track_type >> 2;
|
int32_t trackType = vehicle->track_type >> 2;
|
||||||
if (!track_element_is_covered(trackType))
|
if (!track_element_is_covered(trackType))
|
||||||
{
|
{
|
||||||
auto gForces = vehicle_get_g_forces(vehicle);
|
auto gForces = vehicle->GetGForces();
|
||||||
gForces.LateralG = std::abs(gForces.LateralG);
|
gForces.LateralG = std::abs(gForces.LateralG);
|
||||||
if (gForces.LateralG <= 150)
|
if (gForces.LateralG <= 150)
|
||||||
{
|
{
|
||||||
|
@ -6522,7 +6522,7 @@ static void vehicle_update_track_motion_up_stop_check(Vehicle* vehicle)
|
||||||
int32_t trackType = vehicle->track_type >> 2;
|
int32_t trackType = vehicle->track_type >> 2;
|
||||||
if (!track_element_is_covered(trackType))
|
if (!track_element_is_covered(trackType))
|
||||||
{
|
{
|
||||||
auto gForces = vehicle_get_g_forces(vehicle);
|
auto gForces = vehicle->GetGForces();
|
||||||
|
|
||||||
if (dword_9A2970[vehicle->vehicle_sprite_type] < 0)
|
if (dword_9A2970[vehicle->vehicle_sprite_type] < 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -179,6 +179,12 @@ enum VEHICLE_TRACK_SUBPOSITION : uint8_t
|
||||||
struct Ride;
|
struct Ride;
|
||||||
struct rct_ride_entry;
|
struct rct_ride_entry;
|
||||||
|
|
||||||
|
struct GForces
|
||||||
|
{
|
||||||
|
int32_t VerticalG{};
|
||||||
|
int32_t LateralG{};
|
||||||
|
};
|
||||||
|
|
||||||
struct Vehicle : SpriteBase
|
struct Vehicle : SpriteBase
|
||||||
{
|
{
|
||||||
uint8_t vehicle_sprite_type;
|
uint8_t vehicle_sprite_type;
|
||||||
|
@ -307,6 +313,9 @@ struct Vehicle : SpriteBase
|
||||||
void UpdateSoundParams(std::vector<rct_vehicle_sound_params>& vehicleSoundParamsList) const;
|
void UpdateSoundParams(std::vector<rct_vehicle_sound_params>& vehicleSoundParamsList) const;
|
||||||
bool DodgemsCarWouldCollideAt(const CoordsXY& coords, uint16_t* spriteId) const;
|
bool DodgemsCarWouldCollideAt(const CoordsXY& coords, uint16_t* spriteId) const;
|
||||||
int32_t UpdateTrackMotion(int32_t* outStation);
|
int32_t UpdateTrackMotion(int32_t* outStation);
|
||||||
|
GForces GetGForces() const;
|
||||||
|
void SetMapToolbar() const;
|
||||||
|
int32_t IsUsedInPairs() const;
|
||||||
rct_ride_entry_vehicle* Entry() const;
|
rct_ride_entry_vehicle* Entry() const;
|
||||||
Vehicle* TrainHead() const;
|
Vehicle* TrainHead() const;
|
||||||
Vehicle* TrainTail() const;
|
Vehicle* TrainTail() const;
|
||||||
|
@ -551,18 +560,9 @@ enum
|
||||||
#define VEHICLE_SEAT_PAIR_FLAG 0x80
|
#define VEHICLE_SEAT_PAIR_FLAG 0x80
|
||||||
#define VEHICLE_SEAT_NUM_MASK 0x7F
|
#define VEHICLE_SEAT_NUM_MASK 0x7F
|
||||||
|
|
||||||
struct GForces
|
|
||||||
{
|
|
||||||
int32_t VerticalG{};
|
|
||||||
int32_t LateralG{};
|
|
||||||
};
|
|
||||||
|
|
||||||
Vehicle* try_get_vehicle(uint16_t spriteIndex);
|
Vehicle* try_get_vehicle(uint16_t spriteIndex);
|
||||||
void vehicle_update_all();
|
void vehicle_update_all();
|
||||||
void vehicle_sounds_update();
|
void vehicle_sounds_update();
|
||||||
GForces vehicle_get_g_forces(const Vehicle* vehicle);
|
|
||||||
void vehicle_set_map_toolbar(const Vehicle* vehicle);
|
|
||||||
int32_t vehicle_is_used_in_pairs(const Vehicle* vehicle);
|
|
||||||
const rct_vehicle_info* vehicle_get_move_info(int32_t trackSubposition, int32_t typeAndDirection, int32_t offset);
|
const rct_vehicle_info* vehicle_get_move_info(int32_t trackSubposition, int32_t typeAndDirection, int32_t offset);
|
||||||
uint16_t vehicle_get_move_info_size(int32_t trackSubposition, int32_t typeAndDirection);
|
uint16_t vehicle_get_move_info_size(int32_t trackSubposition, int32_t typeAndDirection);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue