From d3d853b7d6645b7b03f5bfd9b724a1b3cb32a7f1 Mon Sep 17 00:00:00 2001 From: hdpoliveira Date: Sun, 14 Jun 2020 19:50:26 -0300 Subject: [PATCH 1/6] Make loc_6DB38B receive only the update flag --- src/openrct2/ride/Track.cpp | 4 ++-- src/openrct2/ride/Track.h | 2 +- src/openrct2/ride/Vehicle.cpp | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index 5282c10bef..f470239ce0 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -1150,7 +1150,7 @@ int32_t track_get_actual_bank_2(int32_t rideType, bool isInverted, int32_t bank) return bank; } -int32_t track_get_actual_bank_3(Vehicle* vehicle, TileElement* tileElement) +int32_t track_get_actual_bank_3(bool useInvertedSprites, TileElement* tileElement) { auto trackType = tileElement->AsTrack()->GetTrackType(); auto bankStart = TrackDefinitions[trackType].bank_start; @@ -1158,7 +1158,7 @@ int32_t track_get_actual_bank_3(Vehicle* vehicle, TileElement* tileElement) if (ride == nullptr) return bankStart; - bool isInverted = vehicle->HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES) ^ tileElement->AsTrack()->IsInverted(); + bool isInverted = useInvertedSprites ^ tileElement->AsTrack()->IsInverted(); return track_get_actual_bank_2(ride->type, isInverted, bankStart); } diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 72474bec3d..23e4e3a5ee 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -558,7 +558,7 @@ bool track_type_is_station(track_type_t trackType); int32_t track_get_actual_bank(TileElement* tileElement, int32_t bank); int32_t track_get_actual_bank_2(int32_t rideType, bool isInverted, int32_t bank); -int32_t track_get_actual_bank_3(Vehicle* vehicle, TileElement* tileElement); +int32_t track_get_actual_bank_3(bool useInvertedSprites, TileElement* tileElement); bool track_add_station_element(CoordsXYZD loc, ride_id_t rideIndex, int32_t flags, bool fromTrackDesign); bool track_remove_station_element(int32_t x, int32_t y, int32_t z, Direction direction, ride_id_t rideIndex, int32_t flags); diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 6102db1f70..2b0afa17b8 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -7481,10 +7481,10 @@ static void vehicle_update_scenery_door(Vehicle* vehicle) * * rct2: 0x006DB38B */ -static bool loc_6DB38B(Vehicle* vehicle, TileElement* tileElement) +static bool loc_6DB38B(bool useInvertedSprites, TileElement* tileElement) { // Get bank - int32_t bankStart = track_get_actual_bank_3(vehicle, tileElement); + int32_t bankStart = track_get_actual_bank_3(useInvertedSprites, tileElement); // Get vangle int32_t trackType = tileElement->AsTrack()->GetTrackType(); @@ -8034,7 +8034,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack(uint16_t trackType, Ride* cur } } - if (!loc_6DB38B(this, tileElement)) + if (!loc_6DB38B(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement)) { return false; } @@ -8815,7 +8815,7 @@ loc_6DC476: direction = outDirection; } - if (!loc_6DB38B(this, tileElement)) + if (!loc_6DB38B(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement)) { goto loc_6DC9BC; } @@ -9027,7 +9027,7 @@ loc_6DCA9A: tileElement = trackBeginEnd.begin_element; } - if (!loc_6DB38B(this, tileElement)) + if (!loc_6DB38B(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement)) { goto loc_6DCD4A; } From affa0dd30b4d64cf1a509ff2a7b5c0fa91051158 Mon Sep 17 00:00:00 2001 From: hdpoliveira Date: Sun, 14 Jun 2020 20:45:42 -0300 Subject: [PATCH 2/6] Create struct VAngleAndBank and simplify code --- src/openrct2/ride/CableLift.cpp | 12 +++---- src/openrct2/ride/Vehicle.cpp | 60 +++++++++++++++++++-------------- src/openrct2/ride/Vehicle.h | 22 ++++++++++-- 3 files changed, 58 insertions(+), 36 deletions(-) diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index 84c3ab4814..b0f829ed55 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -233,8 +233,7 @@ bool Vehicle::CableLiftUpdateTrackMotionForwards() uint16_t trackTotalProgress = vehicle_get_move_info_size(TrackSubposition, track_type); if (trackProgress >= trackTotalProgress) { - _vehicleVAngleEndF64E36 = TrackDefinitions[trackType].vangle_end; - _vehicleBankEndF64E37 = TrackDefinitions[trackType].bank_end; + _vehicleVAngleAndBank = VAngleAndBankEnd(trackType); TileElement* trackElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); CoordsXYE output; @@ -246,8 +245,7 @@ bool Vehicle::CableLiftUpdateTrackMotionForwards() if (!track_block_get_next(&input, &output, &outputZ, &outputDirection)) return false; - if (TrackDefinitions[output.element->AsTrack()->GetTrackType()].vangle_start != _vehicleVAngleEndF64E36 - || TrackDefinitions[output.element->AsTrack()->GetTrackType()].bank_start != _vehicleBankEndF64E37) + if (_vehicleVAngleAndBank != VAngleAndBankStart(output.element->AsTrack()->GetTrackType())) return false; TrackLocation = { output, outputZ }; @@ -300,8 +298,7 @@ bool Vehicle::CableLiftUpdateTrackMotionBackwards() if (static_cast(trackProgress) == -1) { uint8_t trackType = GetTrackType(); - _vehicleVAngleEndF64E36 = TrackDefinitions[trackType].vangle_start; - _vehicleBankEndF64E37 = TrackDefinitions[trackType].bank_start; + _vehicleVAngleAndBank = VAngleAndBankStart(trackType); TileElement* trackElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); @@ -311,8 +308,7 @@ bool Vehicle::CableLiftUpdateTrackMotionBackwards() if (!track_block_get_previous(input, &output)) return false; - if (TrackDefinitions[output.begin_element->AsTrack()->GetTrackType()].vangle_end != _vehicleVAngleEndF64E36 - || TrackDefinitions[output.begin_element->AsTrack()->GetTrackType()].bank_end != _vehicleBankEndF64E37) + if (_vehicleVAngleAndBank != VAngleAndBankEnd(output.begin_element->AsTrack()->GetTrackType())) return false; TrackLocation = { output.begin_x, output.begin_y, output.begin_z }; diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 2b0afa17b8..3e4689ec95 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -65,8 +65,7 @@ uint32_t _vehicleMotionTrackFlags; int32_t _vehicleVelocityF64E08; int32_t _vehicleVelocityF64E0C; int32_t _vehicleUnkF64E10; -uint8_t _vehicleVAngleEndF64E36; -uint8_t _vehicleBankEndF64E37; +VAngleAndBank _vehicleVAngleAndBank; uint8_t _vehicleF64E2C; Vehicle* _vehicleFrontVehicle; CoordsXYZ unk_F64E20; @@ -7481,16 +7480,10 @@ static void vehicle_update_scenery_door(Vehicle* vehicle) * * rct2: 0x006DB38B */ -static bool loc_6DB38B(bool useInvertedSprites, TileElement* tileElement) +static VAngleAndBank VehicleVAngleAndBankStart(bool useInvertedSprites, TileElement* tileElement) { - // Get bank - int32_t bankStart = track_get_actual_bank_3(useInvertedSprites, tileElement); - - // Get vangle int32_t trackType = tileElement->AsTrack()->GetTrackType(); - int32_t vangleStart = TrackDefinitions[trackType].vangle_start; - - return vangleStart == _vehicleVAngleEndF64E36 && bankStart == _vehicleBankEndF64E37; + return VAngleAndBank{ TrackDefinitions[trackType].vangle_start, track_get_actual_bank_3(useInvertedSprites, tileElement) }; } static void VehicleUpdateGoKartAttemptSwitchLanes(Vehicle* vehicle) @@ -7937,6 +7930,17 @@ static void sub_6DBF3E(Vehicle* vehicle) } } +// TODO move these to Track.cpp +VAngleAndBank VAngleAndBankStart(uint8_t trackType) +{ + return { TrackDefinitions[trackType].vangle_start, TrackDefinitions[trackType].bank_start }; +} + +VAngleAndBank VAngleAndBankEnd(uint8_t trackType) +{ + return { TrackDefinitions[trackType].vangle_end, TrackDefinitions[trackType].bank_end }; +} + /** * * rct2: 0x006DB08C @@ -7945,8 +7949,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack(uint16_t trackType, Ride* cur { CoordsXYZD location = {}; - _vehicleVAngleEndF64E36 = TrackDefinitions[trackType].vangle_end; - _vehicleBankEndF64E37 = TrackDefinitions[trackType].bank_end; + _vehicleVAngleAndBank = VAngleAndBankEnd(trackType); TileElement* tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); if (tileElement == nullptr) @@ -8034,7 +8037,8 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack(uint16_t trackType, Ride* cur } } - if (!loc_6DB38B(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement)) + if (VehicleVAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) + != _vehicleVAngleAndBank) { return false; } @@ -8367,14 +8371,21 @@ loc_6DB967: return false; } +static VAngleAndBank VehicleVAngleAndBankEnd( + Ride* curRide, bool useInvertedSprites, uint16_t trackType, TileElement* tileElement) +{ + bool isInverted = useInvertedSprites ^ tileElement->AsTrack()->IsInverted(); + return { TrackDefinitions[trackType].vangle_end, + track_get_actual_bank_2(curRide->type, isInverted, TrackDefinitions[trackType].bank_end) }; +} + /** * * rct2: 0x006DBAA6 */ bool Vehicle::UpdateTrackMotionBackwardsGetNewTrack(uint16_t trackType, Ride* curRide, uint16_t* progress) { - _vehicleVAngleEndF64E36 = TrackDefinitions[trackType].vangle_start; - _vehicleBankEndF64E37 = TrackDefinitions[trackType].bank_start; + _vehicleVAngleAndBank = VAngleAndBankStart(trackType); TileElement* tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); if (tileElement == nullptr) @@ -8419,11 +8430,8 @@ bool Vehicle::UpdateTrackMotionBackwardsGetNewTrack(uint16_t trackType, Ride* cu return false; } - bool isInverted = HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES) ^ tileElement->AsTrack()->IsInverted(); - int32_t bank = TrackDefinitions[trackType].bank_end; - bank = track_get_actual_bank_2(curRide->type, isInverted, bank); - int32_t vAngle = TrackDefinitions[trackType].vangle_end; - if (_vehicleVAngleEndF64E36 != vAngle || _vehicleBankEndF64E37 != bank) + if (VehicleVAngleAndBankEnd(curRide, HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), trackType, tileElement) + != _vehicleVAngleAndBank) { return false; } @@ -8797,8 +8805,7 @@ loc_6DC476: { uint16_t trackType = GetTrackType(); - _vehicleVAngleEndF64E36 = TrackDefinitions[trackType].vangle_end; - _vehicleBankEndF64E37 = TrackDefinitions[trackType].bank_end; + _vehicleVAngleAndBank = VAngleAndBankEnd(trackType); tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); } int32_t direction; @@ -8815,7 +8822,8 @@ loc_6DC476: direction = outDirection; } - if (!loc_6DB38B(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement)) + if (VehicleVAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) + != _vehicleVAngleAndBank) { goto loc_6DC9BC; } @@ -9011,8 +9019,7 @@ loc_6DCA9A: { uint16_t trackType = GetTrackType(); - _vehicleVAngleEndF64E36 = TrackDefinitions[trackType].vangle_end; - _vehicleBankEndF64E37 = TrackDefinitions[trackType].bank_end; + _vehicleVAngleAndBank = VAngleAndBankEnd(trackType); tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); } @@ -9027,7 +9034,8 @@ loc_6DCA9A: tileElement = trackBeginEnd.begin_element; } - if (!loc_6DB38B(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement)) + if (VehicleVAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) + != _vehicleVAngleAndBank) { goto loc_6DCD4A; } diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 7e6e9a3f5c..960d758683 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -608,6 +608,21 @@ enum SOUND_RANGE_NONE = 255 }; +// TODO move these to Track.h +struct VAngleAndBank +{ + uint8_t VAngle; + uint8_t Bank; +}; +bool operator==(const VAngleAndBank& vb1, const VAngleAndBank& vb2) +{ + return vb1.VAngle == vb2.VAngle && vb1.Bank == vb2.Bank; +} +bool operator!=(const VAngleAndBank& vb1, const VAngleAndBank& vb2) +{ + return !(vb1 == vb2); +} + #define VEHICLE_SEAT_PAIR_FLAG 0x80 #define VEHICLE_SEAT_NUM_MASK 0x7F @@ -623,12 +638,15 @@ extern uint32_t _vehicleMotionTrackFlags; extern int32_t _vehicleVelocityF64E08; extern int32_t _vehicleVelocityF64E0C; extern int32_t _vehicleUnkF64E10; -extern uint8_t _vehicleVAngleEndF64E36; -extern uint8_t _vehicleBankEndF64E37; +extern VAngleAndBank _vehicleVAngleAndBank; extern uint8_t _vehicleF64E2C; extern Vehicle* _vehicleFrontVehicle; extern CoordsXYZ unk_F64E20; +// TODO move these to Track.h +VAngleAndBank VAngleAndBankStart(uint8_t trackType); +VAngleAndBank VAngleAndBankEnd(uint8_t trackType); + /** Helper macro until rides are stored in this module. */ #define GET_VEHICLE(sprite_index) &(get_sprite(sprite_index)->vehicle) From 23cf4b580e00cf56f4d6aff80648e040e01883fb Mon Sep 17 00:00:00 2001 From: hdpoliveira Date: Sun, 14 Jun 2020 21:03:46 -0300 Subject: [PATCH 3/6] Remove global _vehicleVAngleAndBank --- src/openrct2/ride/CableLift.cpp | 8 ++---- src/openrct2/ride/Track.cpp | 10 +++++++ src/openrct2/ride/Track.h | 17 ++++++++++++ src/openrct2/ride/Vehicle.cpp | 49 +++++++++------------------------ src/openrct2/ride/Vehicle.h | 20 -------------- 5 files changed, 43 insertions(+), 61 deletions(-) diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index b0f829ed55..5892adb7ee 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -233,7 +233,6 @@ bool Vehicle::CableLiftUpdateTrackMotionForwards() uint16_t trackTotalProgress = vehicle_get_move_info_size(TrackSubposition, track_type); if (trackProgress >= trackTotalProgress) { - _vehicleVAngleAndBank = VAngleAndBankEnd(trackType); TileElement* trackElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); CoordsXYE output; @@ -245,7 +244,7 @@ bool Vehicle::CableLiftUpdateTrackMotionForwards() if (!track_block_get_next(&input, &output, &outputZ, &outputDirection)) return false; - if (_vehicleVAngleAndBank != VAngleAndBankStart(output.element->AsTrack()->GetTrackType())) + if (track_vangle_and_bank_end(trackType) != track_vangle_and_bank_start(output.element->AsTrack()->GetTrackType())) return false; TrackLocation = { output, outputZ }; @@ -298,8 +297,6 @@ bool Vehicle::CableLiftUpdateTrackMotionBackwards() if (static_cast(trackProgress) == -1) { uint8_t trackType = GetTrackType(); - _vehicleVAngleAndBank = VAngleAndBankStart(trackType); - TileElement* trackElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); auto input = CoordsXYE{ TrackLocation, trackElement }; @@ -308,7 +305,8 @@ bool Vehicle::CableLiftUpdateTrackMotionBackwards() if (!track_block_get_previous(input, &output)) return false; - if (_vehicleVAngleAndBank != VAngleAndBankEnd(output.begin_element->AsTrack()->GetTrackType())) + if (track_vangle_and_bank_start(trackType) + != track_vangle_and_bank_end(output.begin_element->AsTrack()->GetTrackType())) return false; TrackLocation = { output.begin_x, output.begin_y, output.begin_z }; diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index f470239ce0..20a5de71f7 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -560,6 +560,16 @@ const rct_trackdefinition FlatRideTrackDefinitions[256] = }; // clang-format on +VAngleAndBank track_vangle_and_bank_start(uint8_t trackType) +{ + return { TrackDefinitions[trackType].vangle_start, TrackDefinitions[trackType].bank_start }; +} + +VAngleAndBank track_vangle_and_bank_end(uint8_t trackType) +{ + return { TrackDefinitions[trackType].vangle_end, TrackDefinitions[trackType].bank_end }; +} + /** * Helper method to determine if a connects to b by its bank and angle, not location. */ diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 23e4e3a5ee..57a0a2235f 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -33,6 +33,20 @@ struct rct_trackdefinition assert_struct_size(rct_trackdefinition, 8); #pragma pack(pop) +struct VAngleAndBank +{ + uint8_t VAngle; + uint8_t Bank; +}; +bool operator==(const VAngleAndBank& vb1, const VAngleAndBank& vb2) +{ + return vb1.VAngle == vb2.VAngle && vb1.Bank == vb2.Bank; +} +bool operator!=(const VAngleAndBank& vb1, const VAngleAndBank& vb2) +{ + return !(vb1 == vb2); +} + /* size 0x0A */ struct rct_preview_track { @@ -538,6 +552,9 @@ struct track_circuit_iterator extern const rct_trackdefinition FlatRideTrackDefinitions[256]; extern const rct_trackdefinition TrackDefinitions[256]; +VAngleAndBank track_vangle_and_bank_start(uint8_t trackType); +VAngleAndBank track_vangle_and_bank_end(uint8_t trackType); + int32_t track_is_connected_by_shape(TileElement* a, TileElement* b); const rct_preview_track* get_track_def_from_ride(Ride* ride, int32_t trackType); diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 3e4689ec95..fee40ef5d9 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -65,7 +65,6 @@ uint32_t _vehicleMotionTrackFlags; int32_t _vehicleVelocityF64E08; int32_t _vehicleVelocityF64E0C; int32_t _vehicleUnkF64E10; -VAngleAndBank _vehicleVAngleAndBank; uint8_t _vehicleF64E2C; Vehicle* _vehicleFrontVehicle; CoordsXYZ unk_F64E20; @@ -7480,7 +7479,7 @@ static void vehicle_update_scenery_door(Vehicle* vehicle) * * rct2: 0x006DB38B */ -static VAngleAndBank VehicleVAngleAndBankStart(bool useInvertedSprites, TileElement* tileElement) +static VAngleAndBank VAngleAndBankStart(bool useInvertedSprites, TileElement* tileElement) { int32_t trackType = tileElement->AsTrack()->GetTrackType(); return VAngleAndBank{ TrackDefinitions[trackType].vangle_start, track_get_actual_bank_3(useInvertedSprites, tileElement) }; @@ -7930,17 +7929,6 @@ static void sub_6DBF3E(Vehicle* vehicle) } } -// TODO move these to Track.cpp -VAngleAndBank VAngleAndBankStart(uint8_t trackType) -{ - return { TrackDefinitions[trackType].vangle_start, TrackDefinitions[trackType].bank_start }; -} - -VAngleAndBank VAngleAndBankEnd(uint8_t trackType) -{ - return { TrackDefinitions[trackType].vangle_end, TrackDefinitions[trackType].bank_end }; -} - /** * * rct2: 0x006DB08C @@ -7949,7 +7937,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack(uint16_t trackType, Ride* cur { CoordsXYZD location = {}; - _vehicleVAngleAndBank = VAngleAndBankEnd(trackType); + auto vangleAndBankEnd = track_vangle_and_bank_end(trackType); TileElement* tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); if (tileElement == nullptr) @@ -8037,8 +8025,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack(uint16_t trackType, Ride* cur } } - if (VehicleVAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) - != _vehicleVAngleAndBank) + if (VAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) != vangleAndBankEnd) { return false; } @@ -8371,8 +8358,7 @@ loc_6DB967: return false; } -static VAngleAndBank VehicleVAngleAndBankEnd( - Ride* curRide, bool useInvertedSprites, uint16_t trackType, TileElement* tileElement) +static VAngleAndBank VAngleAndBankEnd(Ride* curRide, bool useInvertedSprites, uint16_t trackType, TileElement* tileElement) { bool isInverted = useInvertedSprites ^ tileElement->AsTrack()->IsInverted(); return { TrackDefinitions[trackType].vangle_end, @@ -8385,7 +8371,7 @@ static VAngleAndBank VehicleVAngleAndBankEnd( */ bool Vehicle::UpdateTrackMotionBackwardsGetNewTrack(uint16_t trackType, Ride* curRide, uint16_t* progress) { - _vehicleVAngleAndBank = VAngleAndBankStart(trackType); + auto vangleAndBankStart = track_vangle_and_bank_start(trackType); TileElement* tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); if (tileElement == nullptr) @@ -8430,8 +8416,8 @@ bool Vehicle::UpdateTrackMotionBackwardsGetNewTrack(uint16_t trackType, Ride* cu return false; } - if (VehicleVAngleAndBankEnd(curRide, HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), trackType, tileElement) - != _vehicleVAngleAndBank) + if (VAngleAndBankEnd(curRide, HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), trackType, tileElement) + != vangleAndBankStart) { return false; } @@ -8803,11 +8789,8 @@ loc_6DC476: } } - { - uint16_t trackType = GetTrackType(); - _vehicleVAngleAndBank = VAngleAndBankEnd(trackType); - tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); - } + auto vangleAndBankEnd = track_vangle_and_bank_end(GetTrackType()); + tileElement = map_get_track_element_at_of_type_seq(TrackLocation, GetTrackType(), 0); int32_t direction; { CoordsXYE output; @@ -8822,8 +8805,7 @@ loc_6DC476: direction = outDirection; } - if (VehicleVAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) - != _vehicleVAngleAndBank) + if (VAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) != vangleAndBankEnd) { goto loc_6DC9BC; } @@ -9017,12 +8999,8 @@ loc_6DCA9A: goto loc_6DCC2C; } - { - uint16_t trackType = GetTrackType(); - _vehicleVAngleAndBank = VAngleAndBankEnd(trackType); - - tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); - } + auto vangleAndBankEnd = track_vangle_and_bank_end(GetTrackType()); + tileElement = map_get_track_element_at_of_type_seq(TrackLocation, GetTrackType(), 0); { track_begin_end trackBeginEnd; if (!track_block_get_previous({ TrackLocation, tileElement }, &trackBeginEnd)) @@ -9034,8 +9012,7 @@ loc_6DCA9A: tileElement = trackBeginEnd.begin_element; } - if (VehicleVAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) - != _vehicleVAngleAndBank) + if (VAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) != vangleAndBankEnd) { goto loc_6DCD4A; } diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 960d758683..3b0a0e9f38 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -608,21 +608,6 @@ enum SOUND_RANGE_NONE = 255 }; -// TODO move these to Track.h -struct VAngleAndBank -{ - uint8_t VAngle; - uint8_t Bank; -}; -bool operator==(const VAngleAndBank& vb1, const VAngleAndBank& vb2) -{ - return vb1.VAngle == vb2.VAngle && vb1.Bank == vb2.Bank; -} -bool operator!=(const VAngleAndBank& vb1, const VAngleAndBank& vb2) -{ - return !(vb1 == vb2); -} - #define VEHICLE_SEAT_PAIR_FLAG 0x80 #define VEHICLE_SEAT_NUM_MASK 0x7F @@ -638,15 +623,10 @@ extern uint32_t _vehicleMotionTrackFlags; extern int32_t _vehicleVelocityF64E08; extern int32_t _vehicleVelocityF64E0C; extern int32_t _vehicleUnkF64E10; -extern VAngleAndBank _vehicleVAngleAndBank; extern uint8_t _vehicleF64E2C; extern Vehicle* _vehicleFrontVehicle; extern CoordsXYZ unk_F64E20; -// TODO move these to Track.h -VAngleAndBank VAngleAndBankStart(uint8_t trackType); -VAngleAndBank VAngleAndBankEnd(uint8_t trackType); - /** Helper macro until rides are stored in this module. */ #define GET_VEHICLE(sprite_index) &(get_sprite(sprite_index)->vehicle) From 4ce425b4366f93ca9ca9db14b219079f50de2e66 Mon Sep 17 00:00:00 2001 From: hdpoliveira Date: Sun, 14 Jun 2020 21:18:16 -0300 Subject: [PATCH 4/6] Fix type issues --- src/openrct2/ride/Track.cpp | 6 +++--- src/openrct2/ride/Track.h | 24 +++++++++++++----------- src/openrct2/ride/Vehicle.cpp | 10 +++++----- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index 20a5de71f7..d99c20a2f8 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -1130,7 +1130,7 @@ bool track_element_is_block_start(TileElement* trackElement) return false; } -int32_t track_get_actual_bank(TileElement* tileElement, int32_t bank) +bank_type_t track_get_actual_bank(TileElement* tileElement, bank_type_t bank) { auto ride = get_ride(tileElement->AsTrack()->GetRideIndex()); if (ride != nullptr) @@ -1141,7 +1141,7 @@ int32_t track_get_actual_bank(TileElement* tileElement, int32_t bank) return bank; } -int32_t track_get_actual_bank_2(int32_t rideType, bool isInverted, int32_t bank) +bank_type_t track_get_actual_bank_2(int32_t rideType, bool isInverted, bank_type_t bank) { if (RideTypeDescriptors[rideType].Flags & RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE) { @@ -1160,7 +1160,7 @@ int32_t track_get_actual_bank_2(int32_t rideType, bool isInverted, int32_t bank) return bank; } -int32_t track_get_actual_bank_3(bool useInvertedSprites, TileElement* tileElement) +bank_type_t track_get_actual_bank_3(bool useInvertedSprites, TileElement* tileElement) { auto trackType = tileElement->AsTrack()->GetTrackType(); auto bankStart = TrackDefinitions[trackType].bank_start; diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 57a0a2235f..1a552f13f7 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -18,15 +18,17 @@ constexpr const uint16_t RideConstructionSpecialPieceSelected = 0x100; constexpr const int32_t BLOCK_BRAKE_BASE_SPEED = 0x20364; using track_type_t = uint16_t; +using bank_type_t = uint8_t; +using vangle_type_t = uint8_t; #pragma pack(push, 1) struct rct_trackdefinition { uint8_t type; - uint8_t vangle_end; - uint8_t vangle_start; - uint8_t bank_end; - uint8_t bank_start; + vangle_type_t vangle_end; + vangle_type_t vangle_start; + bank_type_t bank_end; + bank_type_t bank_start; int8_t preview_z_offset; uint8_t pad[2] = {}; }; @@ -35,14 +37,14 @@ assert_struct_size(rct_trackdefinition, 8); struct VAngleAndBank { - uint8_t VAngle; - uint8_t Bank; + vangle_type_t VAngle; + bank_type_t Bank; }; -bool operator==(const VAngleAndBank& vb1, const VAngleAndBank& vb2) +constexpr bool operator==(const VAngleAndBank& vb1, const VAngleAndBank& vb2) { return vb1.VAngle == vb2.VAngle && vb1.Bank == vb2.Bank; } -bool operator!=(const VAngleAndBank& vb1, const VAngleAndBank& vb2) +constexpr bool operator!=(const VAngleAndBank& vb1, const VAngleAndBank& vb2) { return !(vb1 == vb2); } @@ -573,9 +575,9 @@ bool track_element_is_block_start(TileElement* trackElement); bool track_element_is_covered(int32_t trackElementType); bool track_type_is_station(track_type_t trackType); -int32_t track_get_actual_bank(TileElement* tileElement, int32_t bank); -int32_t track_get_actual_bank_2(int32_t rideType, bool isInverted, int32_t bank); -int32_t track_get_actual_bank_3(bool useInvertedSprites, TileElement* tileElement); +bank_type_t track_get_actual_bank(TileElement* tileElement, bank_type_t bank); +bank_type_t track_get_actual_bank_2(int32_t rideType, bool isInverted, bank_type_t bank); +bank_type_t track_get_actual_bank_3(bool useInvertedSprites, TileElement* tileElement); bool track_add_station_element(CoordsXYZD loc, ride_id_t rideIndex, int32_t flags, bool fromTrackDesign); bool track_remove_station_element(int32_t x, int32_t y, int32_t z, Direction direction, ride_id_t rideIndex, int32_t flags); diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index fee40ef5d9..89474213e5 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -7481,7 +7481,7 @@ static void vehicle_update_scenery_door(Vehicle* vehicle) */ static VAngleAndBank VAngleAndBankStart(bool useInvertedSprites, TileElement* tileElement) { - int32_t trackType = tileElement->AsTrack()->GetTrackType(); + auto trackType = tileElement->AsTrack()->GetTrackType(); return VAngleAndBank{ TrackDefinitions[trackType].vangle_start, track_get_actual_bank_3(useInvertedSprites, tileElement) }; } @@ -8789,7 +8789,6 @@ loc_6DC476: } } - auto vangleAndBankEnd = track_vangle_and_bank_end(GetTrackType()); tileElement = map_get_track_element_at_of_type_seq(TrackLocation, GetTrackType(), 0); int32_t direction; { @@ -8805,7 +8804,8 @@ loc_6DC476: direction = outDirection; } - if (VAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) != vangleAndBankEnd) + if (VAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) + != track_vangle_and_bank_end(GetTrackType())) { goto loc_6DC9BC; } @@ -8999,7 +8999,6 @@ loc_6DCA9A: goto loc_6DCC2C; } - auto vangleAndBankEnd = track_vangle_and_bank_end(GetTrackType()); tileElement = map_get_track_element_at_of_type_seq(TrackLocation, GetTrackType(), 0); { track_begin_end trackBeginEnd; @@ -9012,7 +9011,8 @@ loc_6DCA9A: tileElement = trackBeginEnd.begin_element; } - if (VAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) != vangleAndBankEnd) + if (VAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) + != track_vangle_and_bank_end(GetTrackType())) { goto loc_6DCD4A; } From 93b2872747765487395c9b2a155da46c83b2e2d7 Mon Sep 17 00:00:00 2001 From: hdpoliveira Date: Fri, 19 Jun 2020 12:23:16 -0300 Subject: [PATCH 5/6] Rename v-angle to pitch and bank to roll --- src/openrct2/ride/CableLift.cpp | 6 +++--- src/openrct2/ride/Track.cpp | 10 +++++----- src/openrct2/ride/Track.h | 34 ++++++++++++++++----------------- src/openrct2/ride/Vehicle.cpp | 24 +++++++++++------------ 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index 5892adb7ee..a614b904c1 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -244,7 +244,7 @@ bool Vehicle::CableLiftUpdateTrackMotionForwards() if (!track_block_get_next(&input, &output, &outputZ, &outputDirection)) return false; - if (track_vangle_and_bank_end(trackType) != track_vangle_and_bank_start(output.element->AsTrack()->GetTrackType())) + if (track_pitch_and_roll_end(trackType) != track_pitch_and_roll_start(output.element->AsTrack()->GetTrackType())) return false; TrackLocation = { output, outputZ }; @@ -305,8 +305,8 @@ bool Vehicle::CableLiftUpdateTrackMotionBackwards() if (!track_block_get_previous(input, &output)) return false; - if (track_vangle_and_bank_start(trackType) - != track_vangle_and_bank_end(output.begin_element->AsTrack()->GetTrackType())) + if (track_pitch_and_roll_start(trackType) + != track_pitch_and_roll_end(output.begin_element->AsTrack()->GetTrackType())) return false; TrackLocation = { output.begin_x, output.begin_y, output.begin_z }; diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index d99c20a2f8..2452d78872 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -560,12 +560,12 @@ const rct_trackdefinition FlatRideTrackDefinitions[256] = }; // clang-format on -VAngleAndBank track_vangle_and_bank_start(uint8_t trackType) +PitchAndRoll track_pitch_and_roll_start(uint8_t trackType) { return { TrackDefinitions[trackType].vangle_start, TrackDefinitions[trackType].bank_start }; } -VAngleAndBank track_vangle_and_bank_end(uint8_t trackType) +PitchAndRoll track_pitch_and_roll_end(uint8_t trackType) { return { TrackDefinitions[trackType].vangle_end, TrackDefinitions[trackType].bank_end }; } @@ -1130,7 +1130,7 @@ bool track_element_is_block_start(TileElement* trackElement) return false; } -bank_type_t track_get_actual_bank(TileElement* tileElement, bank_type_t bank) +roll_type_t track_get_actual_bank(TileElement* tileElement, roll_type_t bank) { auto ride = get_ride(tileElement->AsTrack()->GetRideIndex()); if (ride != nullptr) @@ -1141,7 +1141,7 @@ bank_type_t track_get_actual_bank(TileElement* tileElement, bank_type_t bank) return bank; } -bank_type_t track_get_actual_bank_2(int32_t rideType, bool isInverted, bank_type_t bank) +roll_type_t track_get_actual_bank_2(int32_t rideType, bool isInverted, roll_type_t bank) { if (RideTypeDescriptors[rideType].Flags & RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE) { @@ -1160,7 +1160,7 @@ bank_type_t track_get_actual_bank_2(int32_t rideType, bool isInverted, bank_type return bank; } -bank_type_t track_get_actual_bank_3(bool useInvertedSprites, TileElement* tileElement) +roll_type_t track_get_actual_bank_3(bool useInvertedSprites, TileElement* tileElement) { auto trackType = tileElement->AsTrack()->GetTrackType(); auto bankStart = TrackDefinitions[trackType].bank_start; diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 1a552f13f7..17b9a443f0 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -18,33 +18,33 @@ constexpr const uint16_t RideConstructionSpecialPieceSelected = 0x100; constexpr const int32_t BLOCK_BRAKE_BASE_SPEED = 0x20364; using track_type_t = uint16_t; -using bank_type_t = uint8_t; -using vangle_type_t = uint8_t; +using roll_type_t = uint8_t; +using pitch_type_t = uint8_t; #pragma pack(push, 1) struct rct_trackdefinition { uint8_t type; - vangle_type_t vangle_end; - vangle_type_t vangle_start; - bank_type_t bank_end; - bank_type_t bank_start; + pitch_type_t vangle_end; + pitch_type_t vangle_start; + roll_type_t bank_end; + roll_type_t bank_start; int8_t preview_z_offset; uint8_t pad[2] = {}; }; assert_struct_size(rct_trackdefinition, 8); #pragma pack(pop) -struct VAngleAndBank +struct PitchAndRoll { - vangle_type_t VAngle; - bank_type_t Bank; + pitch_type_t Pitch; + roll_type_t Roll; }; -constexpr bool operator==(const VAngleAndBank& vb1, const VAngleAndBank& vb2) +constexpr bool operator==(const PitchAndRoll& vb1, const PitchAndRoll& vb2) { - return vb1.VAngle == vb2.VAngle && vb1.Bank == vb2.Bank; + return vb1.Pitch == vb2.Pitch && vb1.Roll == vb2.Roll; } -constexpr bool operator!=(const VAngleAndBank& vb1, const VAngleAndBank& vb2) +constexpr bool operator!=(const PitchAndRoll& vb1, const PitchAndRoll& vb2) { return !(vb1 == vb2); } @@ -554,8 +554,8 @@ struct track_circuit_iterator extern const rct_trackdefinition FlatRideTrackDefinitions[256]; extern const rct_trackdefinition TrackDefinitions[256]; -VAngleAndBank track_vangle_and_bank_start(uint8_t trackType); -VAngleAndBank track_vangle_and_bank_end(uint8_t trackType); +PitchAndRoll track_pitch_and_roll_start(uint8_t trackType); +PitchAndRoll track_pitch_and_roll_end(uint8_t trackType); int32_t track_is_connected_by_shape(TileElement* a, TileElement* b); @@ -575,9 +575,9 @@ bool track_element_is_block_start(TileElement* trackElement); bool track_element_is_covered(int32_t trackElementType); bool track_type_is_station(track_type_t trackType); -bank_type_t track_get_actual_bank(TileElement* tileElement, bank_type_t bank); -bank_type_t track_get_actual_bank_2(int32_t rideType, bool isInverted, bank_type_t bank); -bank_type_t track_get_actual_bank_3(bool useInvertedSprites, TileElement* tileElement); +roll_type_t track_get_actual_bank(TileElement* tileElement, roll_type_t bank); +roll_type_t track_get_actual_bank_2(int32_t rideType, bool isInverted, roll_type_t bank); +roll_type_t track_get_actual_bank_3(bool useInvertedSprites, TileElement* tileElement); bool track_add_station_element(CoordsXYZD loc, ride_id_t rideIndex, int32_t flags, bool fromTrackDesign); bool track_remove_station_element(int32_t x, int32_t y, int32_t z, Direction direction, ride_id_t rideIndex, int32_t flags); diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 89474213e5..75e8f88af8 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -7479,10 +7479,10 @@ static void vehicle_update_scenery_door(Vehicle* vehicle) * * rct2: 0x006DB38B */ -static VAngleAndBank VAngleAndBankStart(bool useInvertedSprites, TileElement* tileElement) +static PitchAndRoll PitchAndRollStart(bool useInvertedSprites, TileElement* tileElement) { auto trackType = tileElement->AsTrack()->GetTrackType(); - return VAngleAndBank{ TrackDefinitions[trackType].vangle_start, track_get_actual_bank_3(useInvertedSprites, tileElement) }; + return PitchAndRoll{ TrackDefinitions[trackType].vangle_start, track_get_actual_bank_3(useInvertedSprites, tileElement) }; } static void VehicleUpdateGoKartAttemptSwitchLanes(Vehicle* vehicle) @@ -7937,7 +7937,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack(uint16_t trackType, Ride* cur { CoordsXYZD location = {}; - auto vangleAndBankEnd = track_vangle_and_bank_end(trackType); + auto pitchAndRollEnd = track_pitch_and_roll_end(trackType); TileElement* tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); if (tileElement == nullptr) @@ -8025,7 +8025,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack(uint16_t trackType, Ride* cur } } - if (VAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) != vangleAndBankEnd) + if (PitchAndRollStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) != pitchAndRollEnd) { return false; } @@ -8358,7 +8358,7 @@ loc_6DB967: return false; } -static VAngleAndBank VAngleAndBankEnd(Ride* curRide, bool useInvertedSprites, uint16_t trackType, TileElement* tileElement) +static PitchAndRoll PitchAndRollEnd(Ride* curRide, bool useInvertedSprites, uint16_t trackType, TileElement* tileElement) { bool isInverted = useInvertedSprites ^ tileElement->AsTrack()->IsInverted(); return { TrackDefinitions[trackType].vangle_end, @@ -8371,7 +8371,7 @@ static VAngleAndBank VAngleAndBankEnd(Ride* curRide, bool useInvertedSprites, ui */ bool Vehicle::UpdateTrackMotionBackwardsGetNewTrack(uint16_t trackType, Ride* curRide, uint16_t* progress) { - auto vangleAndBankStart = track_vangle_and_bank_start(trackType); + auto pitchAndRollStart = track_pitch_and_roll_start(trackType); TileElement* tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); if (tileElement == nullptr) @@ -8416,8 +8416,8 @@ bool Vehicle::UpdateTrackMotionBackwardsGetNewTrack(uint16_t trackType, Ride* cu return false; } - if (VAngleAndBankEnd(curRide, HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), trackType, tileElement) - != vangleAndBankStart) + if (PitchAndRollEnd(curRide, HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), trackType, tileElement) + != pitchAndRollStart) { return false; } @@ -8804,8 +8804,8 @@ loc_6DC476: direction = outDirection; } - if (VAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) - != track_vangle_and_bank_end(GetTrackType())) + if (PitchAndRollStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) + != track_pitch_and_roll_end(GetTrackType())) { goto loc_6DC9BC; } @@ -9011,8 +9011,8 @@ loc_6DCA9A: tileElement = trackBeginEnd.begin_element; } - if (VAngleAndBankStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) - != track_vangle_and_bank_end(GetTrackType())) + if (PitchAndRollStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) + != track_pitch_and_roll_end(GetTrackType())) { goto loc_6DCD4A; } From c35556d75415023525be11c8b63e7e00ee310f9d Mon Sep 17 00:00:00 2001 From: hdpoliveira Date: Fri, 19 Jun 2020 17:35:21 -0300 Subject: [PATCH 6/6] Use CamelCase on track functions --- src/openrct2/ride/CableLift.cpp | 5 ++--- src/openrct2/ride/Track.cpp | 4 ++-- src/openrct2/ride/Track.h | 4 ++-- src/openrct2/ride/Vehicle.cpp | 8 ++++---- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index a614b904c1..fa4d48c45f 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -244,7 +244,7 @@ bool Vehicle::CableLiftUpdateTrackMotionForwards() if (!track_block_get_next(&input, &output, &outputZ, &outputDirection)) return false; - if (track_pitch_and_roll_end(trackType) != track_pitch_and_roll_start(output.element->AsTrack()->GetTrackType())) + if (TrackPitchAndRollEnd(trackType) != TrackPitchAndRollStart(output.element->AsTrack()->GetTrackType())) return false; TrackLocation = { output, outputZ }; @@ -305,8 +305,7 @@ bool Vehicle::CableLiftUpdateTrackMotionBackwards() if (!track_block_get_previous(input, &output)) return false; - if (track_pitch_and_roll_start(trackType) - != track_pitch_and_roll_end(output.begin_element->AsTrack()->GetTrackType())) + if (TrackPitchAndRollStart(trackType) != TrackPitchAndRollEnd(output.begin_element->AsTrack()->GetTrackType())) return false; TrackLocation = { output.begin_x, output.begin_y, output.begin_z }; diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index 2452d78872..121c75e451 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -560,12 +560,12 @@ const rct_trackdefinition FlatRideTrackDefinitions[256] = }; // clang-format on -PitchAndRoll track_pitch_and_roll_start(uint8_t trackType) +PitchAndRoll TrackPitchAndRollStart(uint8_t trackType) { return { TrackDefinitions[trackType].vangle_start, TrackDefinitions[trackType].bank_start }; } -PitchAndRoll track_pitch_and_roll_end(uint8_t trackType) +PitchAndRoll TrackPitchAndRollEnd(uint8_t trackType) { return { TrackDefinitions[trackType].vangle_end, TrackDefinitions[trackType].bank_end }; } diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 17b9a443f0..2c9ba6823c 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -554,8 +554,8 @@ struct track_circuit_iterator extern const rct_trackdefinition FlatRideTrackDefinitions[256]; extern const rct_trackdefinition TrackDefinitions[256]; -PitchAndRoll track_pitch_and_roll_start(uint8_t trackType); -PitchAndRoll track_pitch_and_roll_end(uint8_t trackType); +PitchAndRoll TrackPitchAndRollStart(uint8_t trackType); +PitchAndRoll TrackPitchAndRollEnd(uint8_t trackType); int32_t track_is_connected_by_shape(TileElement* a, TileElement* b); diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 75e8f88af8..c24f401f5e 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -7937,7 +7937,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack(uint16_t trackType, Ride* cur { CoordsXYZD location = {}; - auto pitchAndRollEnd = track_pitch_and_roll_end(trackType); + auto pitchAndRollEnd = TrackPitchAndRollEnd(trackType); TileElement* tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); if (tileElement == nullptr) @@ -8371,7 +8371,7 @@ static PitchAndRoll PitchAndRollEnd(Ride* curRide, bool useInvertedSprites, uint */ bool Vehicle::UpdateTrackMotionBackwardsGetNewTrack(uint16_t trackType, Ride* curRide, uint16_t* progress) { - auto pitchAndRollStart = track_pitch_and_roll_start(trackType); + auto pitchAndRollStart = TrackPitchAndRollStart(trackType); TileElement* tileElement = map_get_track_element_at_of_type_seq(TrackLocation, trackType, 0); if (tileElement == nullptr) @@ -8805,7 +8805,7 @@ loc_6DC476: } if (PitchAndRollStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) - != track_pitch_and_roll_end(GetTrackType())) + != TrackPitchAndRollEnd(GetTrackType())) { goto loc_6DC9BC; } @@ -9012,7 +9012,7 @@ loc_6DCA9A: } if (PitchAndRollStart(HasUpdateFlag(VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES), tileElement) - != track_pitch_and_roll_end(GetTrackType())) + != TrackPitchAndRollEnd(GetTrackType())) { goto loc_6DCD4A; }