From ab3f42f1f9d4eb71c16407d8a97daed12ba2eef7 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Tue, 14 Nov 2017 13:15:17 +0100 Subject: [PATCH] Add getters and setters for ride index and maze entry --- src/openrct2/interface/viewport_interaction.c | 2 +- src/openrct2/peep/Peep.cpp | 30 ++++----- src/openrct2/rct1/S4Importer.cpp | 2 +- src/openrct2/ride/Station.cpp | 1 + src/openrct2/ride/Track.cpp | 44 ++++++++----- src/openrct2/ride/Track.h | 5 +- src/openrct2/ride/TrackDesign.cpp | 2 +- src/openrct2/ride/Vehicle.cpp | 16 ++--- src/openrct2/ride/gentle/CrookedHouse.cpp | 2 +- src/openrct2/ride/gentle/Maze.cpp | 2 +- src/openrct2/ride/ride.c | 61 ++++++++++--------- src/openrct2/ride/ride_ratings.c | 4 +- src/openrct2/ride/thrill/MotionSimulator.cpp | 2 +- src/openrct2/ride/track_design_save.c | 8 +-- src/openrct2/ride/track_paint.c | 2 +- src/openrct2/ride/transport/Chairlift.cpp | 2 +- src/openrct2/scenario/scenario.c | 3 +- src/openrct2/windows/TileInspector.cpp | 2 +- src/openrct2/world/Banner.cpp | 3 +- src/openrct2/world/Entrance.cpp | 8 +-- src/openrct2/world/Wall.cpp | 2 +- src/openrct2/world/footpath.c | 8 +-- src/openrct2/world/map.c | 10 +-- src/openrct2/world/tile_inspector.c | 4 +- 24 files changed, 123 insertions(+), 102 deletions(-) diff --git a/src/openrct2/interface/viewport_interaction.c b/src/openrct2/interface/viewport_interaction.c index f09c774490..a28ef86688 100644 --- a/src/openrct2/interface/viewport_interaction.c +++ b/src/openrct2/interface/viewport_interaction.c @@ -220,7 +220,7 @@ sint32 viewport_interaction_get_item_right(sint32 x, sint32 y, viewport_interact if (tile_element_get_type(tileElement) == TILE_ELEMENT_TYPE_PATH) return info->type = VIEWPORT_INTERACTION_ITEM_NONE; - ride = get_ride(tileElement->properties.track.ride_index); + ride = get_ride(track_element_get_ride_index(tileElement)); if (ride->status != RIDE_STATUS_CLOSED) return info->type; diff --git a/src/openrct2/peep/Peep.cpp b/src/openrct2/peep/Peep.cpp index ec14e0175d..ddd5420e54 100644 --- a/src/openrct2/peep/Peep.cpp +++ b/src/openrct2/peep/Peep.cpp @@ -171,7 +171,7 @@ static bool peep_update_fixing_sub_state_14(bool firstRun, rct_peep * peep, Ri static void peep_update_ride_inspected(sint32 rideIndex); static void peep_release_balloon(rct_peep * peep, sint16 spawn_height); -bool loc_690FD0(rct_peep * peep, uint8 * rideToView, uint8 * rideSeatToView, rct_tile_element * esi); +bool loc_690FD0(rct_peep * peep, uint8 * rideToView, uint8 * rideSeatToView, rct_tile_element * tileElement); #ifdef DEBUG_DESYNC #define peep_rand() scenario_rand_data(peep) @@ -638,7 +638,7 @@ static uint8 peep_assess_surroundings(sint16 centre_x, sint16 centre_y, sint16 c num_scenery++; break; case TILE_ELEMENT_TYPE_TRACK: - ride = get_ride(tileElement->properties.track.ride_index); + ride = get_ride(track_element_get_ride_index(tileElement)); if (ride->lifecycle_flags & RIDE_LIFECYCLE_MUSIC && ride->status != RIDE_STATUS_CLOSED && !(ride->lifecycle_flags & (RIDE_LIFECYCLE_BROKEN_DOWN | RIDE_LIFECYCLE_CRASHED))) { @@ -4238,7 +4238,7 @@ static void peep_update_ride_sub_state_17(rct_peep * peep) } while (!tile_element_is_last_for_tile(tileElement++)); - uint16 maze_entry = tileElement->properties.track.maze_entry; + uint16 maze_entry = track_element_get_maze_entry(tileElement); uint16 open_hedges = 0; uint8 var_37 = peep->var_37; // var_37 is 3, 7, 11 or 15 @@ -9328,7 +9328,7 @@ static sint32 peep_interact_with_path(rct_peep * peep, sint16 x, sint16 y, rct_t */ static sint32 peep_interact_with_shop(rct_peep * peep, sint16 x, sint16 y, rct_tile_element * tile_element) { - uint8 rideIndex = tile_element->properties.track.ride_index; + uint8 rideIndex = track_element_get_ride_index(tile_element); Ride * ride = get_ride(rideIndex); if (!ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_IS_SHOP)) @@ -9681,7 +9681,7 @@ static uint8 footpath_element_dest_in_dir(sint16 x, sint16 y, sint16 z, rct_tile { if (z != tileElement->base_height) continue; - sint32 rideIndex = tileElement->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(tileElement); Ride * ride = get_ride(rideIndex); if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_IS_SHOP)) { @@ -10035,7 +10035,7 @@ static void peep_pathfind_heuristic_search(sint16 x, sint16 y, uint8 z, rct_peep continue; /* For peeps heading for a shop, the goal is the shop * tile. */ - rideIndex = tileElement->properties.track.ride_index; + rideIndex = track_element_get_ride_index(tileElement); Ride * ride = get_ride(rideIndex); if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_IS_SHOP)) { @@ -12577,7 +12577,7 @@ static void peep_easter_egg_peep_interactions(rct_peep * peep) */ static bool peep_should_watch_ride(rct_tile_element * tileElement) { - Ride * ride = get_ride(tileElement->properties.track.ride_index); + Ride * ride = get_ride(track_element_get_ride_index(tileElement)); // Ghosts are purely this-client-side and should not cause any interaction, // as that may lead to a desync. @@ -12977,17 +12977,17 @@ static bool peep_find_ride_to_look_at(rct_peep * peep, uint8 edge, uint8 * rideT return false; } -bool loc_690FD0(rct_peep * peep, uint8 * rideToView, uint8 * rideSeatToView, rct_tile_element * esi) +bool loc_690FD0(rct_peep * peep, uint8 * rideToView, uint8 * rideSeatToView, rct_tile_element * tileElement) { - Ride * ride = get_ride(esi->properties.track.ride_index); + Ride * ride = get_ride(track_element_get_ride_index(tileElement)); - *rideToView = esi->properties.track.ride_index; + *rideToView = track_element_get_ride_index(tileElement); if (ride->excitement == RIDE_RATING_UNDEFINED) { *rideSeatToView = 1; if (ride->status != RIDE_STATUS_OPEN) { - if (esi->clearance_height > peep->next_z + 8) + if (tileElement->clearance_height > peep->next_z + 8) { *rideSeatToView |= (1 << 1); } @@ -13000,7 +13000,7 @@ bool loc_690FD0(rct_peep * peep, uint8 * rideToView, uint8 * rideSeatToView, rct *rideSeatToView = 0; if (ride->status == RIDE_STATUS_OPEN && !(ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN)) { - if (esi->clearance_height > peep->next_z + 8) + if (tileElement->clearance_height > peep->next_z + 8) { *rideSeatToView = 0x02; } @@ -13531,7 +13531,7 @@ static void peep_pick_ride_to_go_on(rct_peep * peep) if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - sint32 rideIndex = tileElement->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(tileElement); _peepRideConsideration[rideIndex >> 5] |= (1u << (rideIndex & 0x1F)); } while (!tile_element_is_last_for_tile(tileElement++)); } @@ -13670,7 +13670,7 @@ static void peep_head_for_nearest_ride_type(rct_peep * peep, sint32 rideType) if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - sint32 rideIndex = tileElement->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(tileElement); ride = get_ride(rideIndex); if (ride->type == rideType) { @@ -13802,7 +13802,7 @@ static void peep_head_for_nearest_ride_with_flags(rct_peep * peep, sint32 rideTy if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - sint32 rideIndex = tileElement->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(tileElement); ride = get_ride(rideIndex); if (ride_type_has_flag(ride->type, rideTypeFlags)) { diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index bb6e2c12f3..ef051f0259 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -2693,7 +2693,7 @@ private: continue; } - uint8 rideIndex = tileElement->properties.track.ride_index; + uint8 rideIndex = track_element_get_ride_index(tileElement); Ride * ride = get_ride(rideIndex); ride->num_block_brakes++; } diff --git a/src/openrct2/ride/Station.cpp b/src/openrct2/ride/Station.cpp index 460ab4db79..357af6b583 100644 --- a/src/openrct2/ride/Station.cpp +++ b/src/openrct2/ride/Station.cpp @@ -16,6 +16,7 @@ #include "../game.h" #include "Station.h" +#include "Track.h" static void ride_update_station_blocksection(Ride * ride, sint32 stationIndex); static void ride_update_station_bumpercar(Ride * ride, sint32 stationIndex); diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index d0bb748a6f..535012e6d9 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -614,7 +614,7 @@ static rct_tile_element * find_station_element(sint32 x, sint32 y, sint32 z, sin continue; if (tile_element_get_direction(tileElement) != direction) continue; - if (tileElement->properties.track.ride_index != rideIndex) + if (track_element_get_ride_index(tileElement) != rideIndex) continue; if (!track_element_is_station(tileElement)) continue; @@ -1491,7 +1491,7 @@ static money32 track_place(sint32 rideIndex, tileElement->type = map_type; tile_element_set_track_sequence(tileElement, trackBlock->index); - tileElement->properties.track.ride_index = rideIndex; + track_element_set_ride_index(tileElement, rideIndex); tileElement->properties.track.type = type; tileElement->properties.track.colour = 0; if (flags & GAME_COMMAND_FLAG_GHOST) @@ -1695,7 +1695,7 @@ static money32 track_remove(uint8 type, return MONEY32_UNDEFINED; } - uint8 rideIndex = tileElement->properties.track.ride_index; + uint8 rideIndex = track_element_get_ride_index(tileElement); type = tileElement->properties.track.type; bool isLiftHill = track_element_is_lift_hill(tileElement); @@ -2099,7 +2099,7 @@ static money32 set_maze_track(uint16 x, uint8 flags, uint8 direction, uint16 y, tileElement->clearance_height = clearanceHeight; tileElement->type = TILE_ELEMENT_TYPE_TRACK; tileElement->properties.track.type = TRACK_ELEM_MAZE; - tileElement->properties.track.ride_index = rideIndex; + track_element_set_ride_index(tileElement, rideIndex); tileElement->properties.track.maze_entry = 0xFFFF; if (flags & GAME_COMMAND_FLAG_GHOST) @@ -2507,16 +2507,16 @@ void track_element_set_inverted(rct_tile_element * tileElement, bool inverted) sint32 track_get_actual_bank(rct_tile_element * tileElement, sint32 bank) { - Ride * ride = get_ride(tileElement->properties.track.ride_index); - sint32 trackColour = tileElement->properties.track.colour; - return track_get_actual_bank_2(ride->type, trackColour, bank); + Ride * ride = get_ride(track_element_get_ride_index(tileElement)); + bool isInverted = track_element_is_inverted(tileElement); + return track_get_actual_bank_2(ride->type, isInverted, bank); } -sint32 track_get_actual_bank_2(sint32 rideType, sint32 trackColour, sint32 bank) +sint32 track_get_actual_bank_2(sint32 rideType, bool isInverted, sint32 bank) { if (RideData4[rideType].flags & RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE) { - if (trackColour & TRACK_ELEMENT_COLOUR_FLAG_INVERTED) + if (isInverted) { if (bank == TRACK_BANK_NONE) { @@ -2533,12 +2533,11 @@ sint32 track_get_actual_bank_2(sint32 rideType, sint32 trackColour, sint32 bank) sint32 track_get_actual_bank_3(rct_vehicle * vehicle, rct_tile_element * tileElement) { - uint8 colourThingToXor = (vehicle->update_flags >> 9) & 0xFF; + bool isInverted = (vehicle->update_flags & VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES) && track_element_is_inverted(tileElement); sint32 trackType = tileElement->properties.track.type; - sint32 rideType = get_ride(tileElement->properties.track.ride_index)->type; - sint32 trackColour = tileElement->properties.track.colour ^ colourThingToXor; + sint32 rideType = get_ride(track_element_get_ride_index(tileElement))->type; sint32 bankStart = TrackDefinitions[trackType].bank_start; - return track_get_actual_bank_2(rideType, trackColour, bankStart); + return track_get_actual_bank_2(rideType, isInverted, bankStart); } bool track_element_is_station(rct_tile_element * trackElement) @@ -2658,12 +2657,12 @@ void tile_element_set_green_light(rct_tile_element * tileElement, bool greenLigh } } -sint32 tile_element_get_brake_booster_speed(const rct_tile_element *tileElement) +sint32 tile_element_get_brake_booster_speed(const rct_tile_element * tileElement) { return (tileElement->properties.track.sequence >> 4) << 1; } -void tile_element_set_brake_booster_speed(rct_tile_element *tileElement, sint32 speed) +void tile_element_set_brake_booster_speed(rct_tile_element * tileElement, sint32 speed) { tileElement->properties.track.sequence = tile_element_get_track_sequence(tileElement) | ((speed >> 1) << 4); } @@ -2686,4 +2685,19 @@ void tile_element_decrement_onride_photo_timout(rct_tile_element * tileElement) { tileElement->properties.track.sequence -= (1 << 4); } +} + +uint16 track_element_get_maze_entry(const rct_tile_element * tileElement) +{ + return tileElement->properties.track.maze_entry; +} + +uint8 track_element_get_ride_index(const rct_tile_element * tileElement) +{ + return tileElement->properties.track.ride_index; +} + +void track_element_set_ride_index(rct_tile_element * tileElement, uint8 rideIndex) +{ + tileElement->properties.track.ride_index = rideIndex; } \ No newline at end of file diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index f8c9b94e0d..adb86013f2 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -552,7 +552,7 @@ bool track_element_is_inverted(rct_tile_element * tileElement); void track_element_set_inverted(rct_tile_element * tileElement, bool inverted); sint32 track_get_actual_bank(rct_tile_element * tileElement, sint32 bank); -sint32 track_get_actual_bank_2(sint32 rideType, sint32 trackColour, sint32 bank); +sint32 track_get_actual_bank_2(sint32 rideType, bool isInverted, sint32 bank); sint32 track_get_actual_bank_3(rct_vehicle * vehicle, rct_tile_element * tileElement); void game_command_place_track(sint32 * eax, sint32 * ebx, sint32 * ecx, sint32 * edx, sint32 * esi, sint32 * edi, sint32 * ebp); @@ -576,6 +576,9 @@ void tile_element_set_brake_booster_speed(rct_tile_element *tileElement, sint32 bool tile_element_is_taking_photo(const rct_tile_element * tileElement); void tile_element_set_onride_photo_timeout(rct_tile_element * tileElement); void tile_element_decrement_onride_photo_timout(rct_tile_element * tileElement); +uint16 track_element_get_maze_entry(const rct_tile_element * tileElement); +uint8 track_element_get_ride_index(const rct_tile_element * tileElement); +void track_element_set_ride_index(rct_tile_element * tileElement, uint8 rideIndex); #ifdef __cplusplus } diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 06ed148741..ce6f4e7c3d 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -2113,7 +2113,7 @@ static money32 place_maze_design(uint8 flags, uint8 rideIndex, uint16 mazeEntry, tileElement->clearance_height = fz + 4; tileElement->type = TILE_ELEMENT_TYPE_TRACK; tileElement->properties.track.type = TRACK_ELEM_MAZE; - tileElement->properties.track.ride_index = rideIndex; + track_element_set_ride_index(tileElement, rideIndex); tileElement->properties.track.maze_entry = mazeEntry; if (flags & GAME_COMMAND_FLAG_GHOST) { diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 5084796455..8071290538 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -2737,7 +2737,7 @@ static bool try_add_synchronised_station(sint32 x, sint32 y, sint32 z) return false; } - sint32 rideIndex = tileElement->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(tileElement); Ride * ride = get_ride(rideIndex); if (!(ride->depart_flags & RIDE_DEPART_SYNCHRONISE_WITH_ADJACENT_STATIONS)) { @@ -8020,7 +8020,7 @@ loc_6DB358: // Update VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES flag vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; { - sint32 rideType = get_ride(tileElement->properties.track.ride_index)->type; + sint32 rideType = get_ride(track_element_get_ride_index(tileElement))->type; if (RideData4[rideType].flags & RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE) { if (track_element_is_inverted(tileElement)) @@ -8090,7 +8090,7 @@ loc_6DB41D: vehicle_trigger_on_ride_photo(vehicle, tileElement); } { - uint16 rideType = get_ride(tileElement->properties.track.ride_index)->type; + uint16 rideType = get_ride(track_element_get_ride_index(tileElement))->type; if (trackType == TRACK_ELEM_ROTATION_CONTROL_TOGGLE && rideType == RIDE_TYPE_WILD_MOUSE) { vehicle->update_flags ^= VEHICLE_UPDATE_FLAG_13; @@ -8399,9 +8399,9 @@ static bool vehicle_update_track_motion_backwards_get_new_track(rct_vehicle * ve return false; } - sint32 trackColour = ((vehicle->update_flags >> 9) ^ tileElement->properties.track.colour) & 4; + bool isInverted = (vehicle->update_flags & VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES) && track_element_is_inverted(tileElement); sint32 bank = TrackDefinitions[trackType].bank_end; - bank = track_get_actual_bank_2(ride->type, trackColour, bank); + bank = track_get_actual_bank_2(ride->type, isInverted, bank); sint32 vAngle = TrackDefinitions[trackType].vangle_end; if (_vehicleVAngleEndF64E36 != vAngle || _vehicleBankEndF64E37 != bank) { @@ -8839,7 +8839,7 @@ loc_6DC476: } { - sint32 rideType = get_ride(tileElement->properties.track.ride_index)->type; + sint32 rideType = get_ride(track_element_get_ride_index(tileElement))->type; vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; if (RideData4[rideType].flags & RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE) { @@ -9090,7 +9090,7 @@ loc_6DCA9A: } { - sint32 rideType = get_ride(tileElement->properties.track.ride_index)->type; + sint32 rideType = get_ride(track_element_get_ride_index(tileElement))->type; vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES; if (RideData4[rideType].flags & RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE) { @@ -9118,7 +9118,7 @@ loc_6DCA9A: } vehicle->track_type = (tileElement->properties.track.type << 2) | (direction & 3); - vehicle->var_CF = (tileElement->properties.track.colour >> 4) << 1; + vehicle->var_CF = track_element_get_seat_rotation(tileElement) << 1; // There are two bytes before the move info list regs.ax = vehicle_get_move_info_size(vehicle->var_CD, vehicle->track_type); diff --git a/src/openrct2/ride/gentle/CrookedHouse.cpp b/src/openrct2/ride/gentle/CrookedHouse.cpp index 0cd9fcd90b..88e2aa62be 100644 --- a/src/openrct2/ride/gentle/CrookedHouse.cpp +++ b/src/openrct2/ride/gentle/CrookedHouse.cpp @@ -47,7 +47,7 @@ static void paint_crooked_house_structure(paint_session * session, uint8 directi { rct_tile_element * original_tile_element = static_cast(session->CurrentlyDrawnItem); - Ride * ride = get_ride(original_tile_element->properties.track.ride_index); + Ride * ride = get_ride(track_element_get_ride_index(original_tile_element)); rct_ride_entry * rideEntry = get_ride_entry(ride->subtype); diff --git a/src/openrct2/ride/gentle/Maze.cpp b/src/openrct2/ride/gentle/Maze.cpp index 054296bb49..86ffdf08cf 100644 --- a/src/openrct2/ride/gentle/Maze.cpp +++ b/src/openrct2/ride/gentle/Maze.cpp @@ -54,7 +54,7 @@ enum static void maze_paint_setup(paint_session * session, uint8 rideIndex, uint8 trackSequence, uint8 direction, sint32 height, rct_tile_element * tileElement) { - uint16 maze_entry = tileElement->properties.track.maze_entry; + uint16 maze_entry = track_element_get_maze_entry(tileElement); maze_entry = rol16(maze_entry, direction * 4); uint32 rotation = get_current_rotation(); diff --git a/src/openrct2/ride/ride.c b/src/openrct2/ride/ride.c index 8d617cd096..a9c99691e5 100644 --- a/src/openrct2/ride/ride.c +++ b/src/openrct2/ride/ride.c @@ -488,7 +488,7 @@ bool ride_try_get_origin_element(sint32 rideIndex, rct_xy_element *output) do { if (tile_element_get_type(it.element) != TILE_ELEMENT_TYPE_TRACK) continue; - if (rideIndex != it.element->properties.track.ride_index) + if (rideIndex != track_element_get_ride_index(it.element)) continue; // Found a track piece for target ride @@ -547,7 +547,7 @@ bool track_block_get_next_from_zero(sint16 x, sint16 y, sint16 z_start, uint8 ri if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - if (tileElement->properties.track.ride_index != rideIndex) + if (track_element_get_ride_index(tileElement) != rideIndex) continue; if (tile_element_get_track_sequence(tileElement) != 0) @@ -589,7 +589,7 @@ bool track_block_get_next_from_zero(sint16 x, sint16 y, sint16 z_start, uint8 ri */ bool track_block_get_next(rct_xy_element *input, rct_xy_element *output, sint32 *z, sint32 *direction) { - uint8 rideIndex = input->element->properties.track.ride_index; + uint8 rideIndex = track_element_get_ride_index(input->element); Ride* ride = get_ride(rideIndex); const rct_preview_track* trackBlock = get_track_def_from_ride(ride, input->element->properties.track.type); @@ -671,7 +671,7 @@ bool track_block_get_previous_from_zero(sint16 x, sint16 y, sint16 z, uint8 ride if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - if (tileElement->properties.track.ride_index != rideIndex) + if (track_element_get_ride_index(tileElement) != rideIndex) continue; const rct_preview_track* nextTrackBlock = get_track_def_from_ride(ride, tileElement->properties.track.type); @@ -747,7 +747,7 @@ bool track_block_get_previous_from_zero(sint16 x, sint16 y, sint16 z, uint8 ride */ bool track_block_get_previous(sint32 x, sint32 y, rct_tile_element *tileElement, track_begin_end *outTrackBeginEnd) { - uint8 rideIndex = tileElement->properties.track.ride_index; + uint8 rideIndex = track_element_get_ride_index(tileElement); Ride* ride = get_ride(rideIndex); const rct_preview_track* trackBlock = get_track_def_from_ride(ride, tileElement->properties.track.type); @@ -804,7 +804,7 @@ sint32 ride_find_track_gap(rct_xy_element *input, rct_xy_element *output) sint32 rideIndex; assert(tile_element_get_type(input->element) == TILE_ELEMENT_TYPE_TRACK); - rideIndex = input->element->properties.track.ride_index; + rideIndex = track_element_get_ride_index(input->element); ride = get_ride(rideIndex); if (ride->type == RIDE_TYPE_MAZE) @@ -1232,7 +1232,7 @@ sint32 sub_6C683D(sint32* x, sint32* y, sint32* z, sint32 direction, sint32 type return 1; // Possibly z should be & 0xF8 - const rct_preview_track *trackBlock = get_track_def_from_ride_index(tileElement->properties.track.ride_index, type); + const rct_preview_track * trackBlock = get_track_def_from_ride_index(track_element_get_ride_index(tileElement), type); sint32 sequence = tile_element_get_track_sequence(tileElement); uint8 mapDirection = tile_element_get_direction(tileElement); @@ -1794,7 +1794,7 @@ static sint32 ride_modify_entrance_or_exit(rct_tile_element *tileElement, sint32 */ static sint32 ride_modify_maze(rct_tile_element *tileElement, sint32 x, sint32 y) { - _currentRideIndex = tileElement->properties.track.ride_index; + _currentRideIndex = track_element_get_ride_index(tileElement); _rideConstructionState = RIDE_CONSTRUCTION_STATE_MAZE_BUILD; _currentTrackBeginX = x; _currentTrackBeginY = y; @@ -1821,7 +1821,7 @@ sint32 ride_modify(rct_xy_element *input) rct_ride_entry *rideEntry; tileElement = *input; - rideIndex = tileElement.element->properties.track.ride_index; + rideIndex = track_element_get_ride_index(tileElement.element); ride = get_ride(rideIndex); if (ride == NULL) { return 0; @@ -3290,13 +3290,13 @@ static void ride_shop_connected(Ride* ride, sint32 ride_idx) tileElement = map_get_first_element_at(x, y); do { - if (tile_element_get_type(tileElement) == TILE_ELEMENT_TYPE_TRACK && tileElement->properties.track.ride_index == ride_idx) + if (tile_element_get_type(tileElement) == TILE_ELEMENT_TYPE_TRACK && track_element_get_ride_index(tileElement) == ride_idx) break; } while (!tile_element_is_last_for_tile(tileElement++)); uint16 entrance_directions = 0; uint8 track_type = tileElement->properties.track.type; - ride = get_ride(tileElement->properties.track.ride_index); + ride = get_ride(track_element_get_ride_index(tileElement)); if (ride == NULL) { return; @@ -3355,7 +3355,7 @@ static void ride_track_set_map_tooltip(rct_tile_element *tileElement) sint32 rideIndex; Ride *ride; - rideIndex = tileElement->properties.track.ride_index; + rideIndex = track_element_get_ride_index(tileElement); ride = get_ride(rideIndex); set_map_tooltip_format_arg(0, rct_string_id, STR_RIDE_MAP_TIP); @@ -3374,7 +3374,7 @@ static void ride_station_set_map_tooltip(rct_tile_element *tileElement) sint32 i, rideIndex, stationIndex; Ride *ride; - rideIndex = tileElement->properties.track.ride_index; + rideIndex = track_element_get_ride_index(tileElement); ride = get_ride(rideIndex); stationIndex = tile_element_get_station(tileElement); @@ -3401,7 +3401,7 @@ static void ride_entrance_set_map_tooltip(rct_tile_element *tileElement) sint32 i, rideIndex, stationIndex; Ride *ride; - rideIndex = tileElement->properties.track.ride_index; + rideIndex = track_element_get_ride_index(tileElement); ride = get_ride(rideIndex); // Get the station @@ -4204,7 +4204,7 @@ static sint32 ride_check_block_brakes(rct_xy_element *input, rct_xy_element *out track_circuit_iterator it; sint32 rideIndex, type; - rideIndex = input->element->properties.track.ride_index; + rideIndex = track_element_get_ride_index(input->element); w = window_find_by_class(WC_RIDE_CONSTRUCTION); if (w != NULL && _rideConstructionState != RIDE_CONSTRUCTION_STATE_0 && _currentRideIndex == rideIndex) ride_construction_invalidate_current_track(); @@ -4249,7 +4249,7 @@ static sint32 ride_check_block_brakes(rct_xy_element *input, rct_xy_element *out */ static bool ride_check_track_contains_inversions(rct_xy_element *input, rct_xy_element *output) { - sint32 rideIndex = input->element->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(input->element); Ride *ride = get_ride(rideIndex); if (ride->type == RIDE_TYPE_MAZE) return true; @@ -4280,7 +4280,7 @@ static bool ride_check_track_contains_inversions(rct_xy_element *input, rct_xy_e */ static bool ride_check_track_contains_banked(rct_xy_element *input, rct_xy_element *output) { - sint32 rideIndex = input->element->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(input->element); Ride *ride = get_ride(rideIndex); if (ride->type == RIDE_TYPE_MAZE) return true; @@ -4311,7 +4311,8 @@ static sint32 ride_check_station_length(rct_xy_element *input, rct_xy_element *o rct_window* w = window_find_by_class(WC_RIDE_CONSTRUCTION); if (w != 0 && _rideConstructionState != RIDE_CONSTRUCTION_STATE_0 && - _currentRideIndex == input->element->properties.track.ride_index){ + _currentRideIndex == track_element_get_ride_index(input->element)) + { ride_construction_invalidate_current_track(); } @@ -4362,7 +4363,7 @@ static bool ride_check_start_and_end_is_station(rct_xy_element *input, rct_xy_el sint32 rideIndex, trackType; rct_xy_element trackBack, trackFront; - rideIndex = input->element->properties.track.ride_index; + rideIndex = track_element_get_ride_index(input->element); ride = get_ride(rideIndex); w = window_find_by_class(WC_RIDE_CONSTRUCTION); @@ -5259,7 +5260,7 @@ static rct_tile_element *loc_6B4F6B(sint32 rideIndex, sint32 x, sint32 y) continue; } - if (tileElement->properties.track.ride_index == rideIndex) + if (track_element_get_ride_index(tileElement) == rideIndex) return tileElement; } while (!tile_element_is_last_for_tile(tileElement++)); @@ -5540,7 +5541,7 @@ sint32 ride_get_refund_price(sint32 ride_id) if (tile_element_get_type(it.element) != TILE_ELEMENT_TYPE_TRACK) continue; - if (it.element->properties.track.ride_index != ride_id) + if (track_element_get_ride_index(it.element) != ride_id) continue; sint32 x = it.x * 32, y = it.y * 32; @@ -6483,7 +6484,7 @@ bool ride_has_any_track_elements(sint32 rideIndex) while (tile_element_iterator_next(&it)) { if (tile_element_get_type(it.element) != TILE_ELEMENT_TYPE_TRACK) continue; - if (it.element->properties.track.ride_index != rideIndex) + if (track_element_get_ride_index(it.element) != rideIndex) continue; if (it.element->flags & TILE_ELEMENT_FLAG_GHOST) continue; @@ -6507,7 +6508,7 @@ void ride_all_has_any_track_elements(bool *rideIndexArray) if (it.element->flags & TILE_ELEMENT_FLAG_GHOST) continue; - rideIndexArray[it.element->properties.track.ride_index] = true; + rideIndexArray[track_element_get_ride_index(it.element)] = true; } } @@ -6645,7 +6646,7 @@ void ride_get_entrance_or_exit_position_from_screen_position(sint32 screenX, sin { if (tile_element_get_type(tileElement) == TILE_ELEMENT_TYPE_TRACK) { - if (tileElement->properties.track.ride_index == gRideEntranceExitPlaceRideIndex) + if (track_element_get_ride_index(tileElement) == gRideEntranceExitPlaceRideIndex) { if (TrackSequenceProperties[tileElement->properties.track.type][0] & TRACK_SEQUENCE_FLAG_ORIGIN) { @@ -6714,7 +6715,7 @@ void ride_get_entrance_or_exit_position_from_screen_position(sint32 screenX, sin continue; if (tileElement->base_height != stationHeight) continue; - if (tileElement->properties.track.ride_index != gRideEntranceExitPlaceRideIndex) + if (track_element_get_ride_index(tileElement) != gRideEntranceExitPlaceRideIndex) continue; if (tileElement->properties.track.type == TRACK_ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP) { @@ -6768,7 +6769,7 @@ void ride_get_entrance_or_exit_position_from_screen_position(sint32 screenX, sin { if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - if (tileElement->properties.track.ride_index != gRideEntranceExitPlaceRideIndex) + if (track_element_get_ride_index(tileElement) != gRideEntranceExitPlaceRideIndex) continue; if (tile_element_get_station(tileElement) != gRideEntranceExitPlaceStationIndex) continue; @@ -7110,7 +7111,7 @@ static sint32 ride_get_track_length(Ride * ride) if (foundTrack) { - rideIndex = tileElement->properties.track.ride_index; + rideIndex = track_element_get_ride_index(tileElement); w = window_find_by_class(WC_RIDE_CONSTRUCTION); if (w != NULL && _rideConstructionState != RIDE_CONSTRUCTION_STATE_0 && _currentRideIndex == rideIndex) @@ -7510,7 +7511,7 @@ void sub_6CB945(sint32 rideIndex) do { if (tileElement->base_height != location.z) continue; if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - if (tileElement->properties.track.ride_index != rideIndex) continue; + if (track_element_get_ride_index(tileElement) != rideIndex) continue; if (tile_element_get_track_sequence(tileElement) != 0) continue; if (!(TrackSequenceProperties[tileElement->properties.track.type][0] & TRACK_SEQUENCE_FLAG_ORIGIN)) continue; @@ -7612,7 +7613,7 @@ void sub_6CB945(sint32 rideIndex) rct_tile_element *trackElement = map_get_first_element_at(nextLocation.x >> 5, nextLocation.y >> 5); do { if (tile_element_get_type(trackElement) != TILE_ELEMENT_TYPE_TRACK) continue; - if (trackElement->properties.track.ride_index != rideIndex) continue; + if (track_element_get_ride_index(tileElement) != rideIndex) continue; if (trackElement->base_height != tileElement->base_height) continue; uint8 trackType = trackElement->properties.track.type; @@ -7969,7 +7970,7 @@ static bool check_for_adjacent_station(sint32 x, sint32 y, sint32 z, uint8 direc rct_tile_element * stationElement = get_station_platform(adjX, adjY, z, 2); if (stationElement != NULL) { - sint32 rideIndex = stationElement->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(stationElement); Ride * ride = get_ride(rideIndex); if (ride->depart_flags & RIDE_DEPART_SYNCHRONISE_WITH_ADJACENT_STATIONS) { diff --git a/src/openrct2/ride/ride_ratings.c b/src/openrct2/ride/ride_ratings.c index cd310686cf..5a341fbaf7 100644 --- a/src/openrct2/ride/ride_ratings.c +++ b/src/openrct2/ride/ride_ratings.c @@ -400,7 +400,7 @@ static void ride_ratings_score_close_proximity_in_direction(rct_tile_element *in } break; case TILE_ELEMENT_TYPE_TRACK: - if (inputTileElement->properties.track.ride_index != tileElement->properties.track.ride_index) { + if (track_element_get_ride_index(inputTileElement) != track_element_get_ride_index(tileElement)) { if (abs((sint32)inputTileElement->base_height - (sint32)tileElement->base_height) <= 2) { proximity_score_increment(PROXIMITY_FOREIGN_TRACK_SIDE_CLOSE); } @@ -550,7 +550,7 @@ static void ride_ratings_score_close_proximity(rct_tile_element *inputTileElemen } } } - if (inputTileElement->properties.track.ride_index != tileElement->properties.track.ride_index) { + if (track_element_get_ride_index(inputTileElement) != track_element_get_ride_index(tileElement)) { proximity_score_increment(PROXIMITY_FOREIGN_TRACK_ABOVE_OR_BELOW); if (tileElement->clearance_height == inputTileElement->base_height) { proximity_score_increment(PROXIMITY_FOREIGN_TRACK_TOUCH_ABOVE); diff --git a/src/openrct2/ride/thrill/MotionSimulator.cpp b/src/openrct2/ride/thrill/MotionSimulator.cpp index 437aad88a5..e89eba01c8 100644 --- a/src/openrct2/ride/thrill/MotionSimulator.cpp +++ b/src/openrct2/ride/thrill/MotionSimulator.cpp @@ -39,7 +39,7 @@ enum static void paint_motionsimulator_vehicle(paint_session * session, sint8 offsetX, sint8 offsetY, uint8 direction, sint32 height, rct_tile_element * tileElement) { - Ride * ride = get_ride(tileElement->properties.track.ride_index); + Ride * ride = get_ride(track_element_get_ride_index(tileElement)); rct_ride_entry * rideEntry = get_ride_entry_by_ride(ride); rct_tile_element * savedTileElement = static_cast(session->CurrentlyDrawnItem); diff --git a/src/openrct2/ride/track_design_save.c b/src/openrct2/ride/track_design_save.c index a8968aa94f..6b7f210c63 100644 --- a/src/openrct2/ride/track_design_save.c +++ b/src/openrct2/ride/track_design_save.c @@ -584,7 +584,7 @@ static bool track_design_save_should_select_scenery_around(sint32 rideIndex, rct return true; break; case TILE_ELEMENT_TYPE_TRACK: - if (tileElement->properties.track.ride_index == rideIndex) + if (track_element_get_ride_index(tileElement) == rideIndex) return true; break; case TILE_ELEMENT_TYPE_ENTRANCE: @@ -815,7 +815,7 @@ static bool track_design_save_to_td6_for_maze(uint8 rideIndex, rct_track_td6 *td do { if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - if (tileElement->properties.track.ride_index == rideIndex){ + if (track_element_get_ride_index(tileElement) == rideIndex){ mapFound = true; break; } @@ -848,9 +848,9 @@ static bool track_design_save_to_td6_for_maze(uint8 rideIndex, rct_track_td6 *td tileElement = map_get_first_element_at(x / 32, y / 32); do { if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - if (tileElement->properties.track.ride_index != rideIndex) continue; + if (track_element_get_ride_index(tileElement) != rideIndex) continue; - maze->maze_entry = tileElement->properties.track.maze_entry; + maze->maze_entry = track_element_get_maze_entry(tileElement); maze->x = (x - startX) / 32; maze->y = (y - startY) / 32; maze++; diff --git a/src/openrct2/ride/track_paint.c b/src/openrct2/ride/track_paint.c index 650870b77e..54086763b8 100644 --- a/src/openrct2/ride/track_paint.c +++ b/src/openrct2/ride/track_paint.c @@ -1735,7 +1735,7 @@ void track_paint_util_left_corkscrew_up_supports(paint_session * session, uint8 */ void track_paint(paint_session * session, uint8 direction, sint32 height, rct_tile_element *tileElement) { - sint32 rideIndex = tileElement->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(tileElement); Ride *ride = get_ride(rideIndex); if (ride->type == RIDE_TYPE_NULL) { log_error("Attempted to paint invalid ride: %d", rideIndex); diff --git a/src/openrct2/ride/transport/Chairlift.cpp b/src/openrct2/ride/transport/Chairlift.cpp index 514e87b2a6..a984a50804 100644 --- a/src/openrct2/ride/transport/Chairlift.cpp +++ b/src/openrct2/ride/transport/Chairlift.cpp @@ -127,7 +127,7 @@ static rct_tile_element * chairlift_paint_util_map_get_track_element_at_from_rid { if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - if (tileElement->properties.track.ride_index != rideIndex) + if (track_element_get_ride_index(tileElement) != rideIndex) continue; if (tileElement->base_height != z && tileElement->base_height != z - 1) continue; diff --git a/src/openrct2/scenario/scenario.c b/src/openrct2/scenario/scenario.c index 5645bbfc06..2b6df2bd73 100644 --- a/src/openrct2/scenario/scenario.c +++ b/src/openrct2/scenario/scenario.c @@ -48,6 +48,7 @@ #include "ScenarioSources.h" #include "scenario.h" #include "../Context.h" +#include "../ride/Track.h" const rct_string_id ScenarioCategoryStringIds[SCENARIO_CATEGORY_COUNT] = { STR_BEGINNER_PARKS, @@ -615,7 +616,7 @@ static bool scenario_prepare_rides_for_save() if (isFiveCoasterObjective) { - ride = get_ride(it.element->properties.track.ride_index); + ride = get_ride(track_element_get_ride_index(it.element)); // In the previous step, this flag was set on the first five roller coasters. if (ride != NULL && ride->lifecycle_flags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) diff --git a/src/openrct2/windows/TileInspector.cpp b/src/openrct2/windows/TileInspector.cpp index 179702c90d..3245ad23b2 100644 --- a/src/openrct2/windows/TileInspector.cpp +++ b/src/openrct2/windows/TileInspector.cpp @@ -1720,7 +1720,7 @@ static void window_tile_inspector_paint(rct_window *w, rct_drawpixelinfo *dpi) case TILE_INSPECTOR_PAGE_TRACK: { // Details // Ride - sint16 rideId = tileElement->properties.track.ride_index; + sint16 rideId = track_element_get_ride_index(tileElement); Ride *ride = get_ride(rideId); rct_string_id rideType = RideNaming[ride->type].name; gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_RIDE_TYPE, &rideType, COLOUR_DARK_GREEN, x, y); diff --git a/src/openrct2/world/Banner.cpp b/src/openrct2/world/Banner.cpp index 8dce5d99c5..ecc0c62651 100644 --- a/src/openrct2/world/Banner.cpp +++ b/src/openrct2/world/Banner.cpp @@ -28,6 +28,7 @@ #include "../interface/window.h" #include "../localisation/localisation.h" #include "../ride/ride.h" +#include "../ride/Track.h" rct_banner gBanners[MAX_BANNERS]; @@ -48,7 +49,7 @@ static sint32 banner_get_ride_index_at(sint32 x, sint32 y, sint32 z) if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - rideIndex = tileElement->properties.track.ride_index; + rideIndex = track_element_get_ride_index(tileElement); ride = get_ride(rideIndex); if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_IS_SHOP)) continue; diff --git a/src/openrct2/world/Entrance.cpp b/src/openrct2/world/Entrance.cpp index 2609cc5ace..a13ba618f2 100644 --- a/src/openrct2/world/Entrance.cpp +++ b/src/openrct2/world/Entrance.cpp @@ -626,12 +626,12 @@ extern "C" x += TileDirectionDelta[direction].x; y += TileDirectionDelta[direction].y; sint32 z = tileElement->base_height; - sint32 rideIndex = tileElement->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(tileElement); tileElement = map_get_first_element_at(x >> 5, y >> 5); do { if (tileElement->type != TILE_ELEMENT_TYPE_TRACK) continue; - if (tileElement->properties.track.ride_index != rideIndex) continue; + if (track_element_get_ride_index(tileElement) != rideIndex) continue; if (tileElement->base_height != z) continue; if (tileElement->properties.track.type != TRACK_ELEM_MAZE) continue; @@ -657,12 +657,12 @@ extern "C" x += TileDirectionDelta[direction].x; y += TileDirectionDelta[direction].y; sint32 z = tileElement->base_height; - sint32 rideIndex = tileElement->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(tileElement); tileElement = map_get_first_element_at(x >> 5, y >> 5); do { if (tileElement->type != TILE_ELEMENT_TYPE_TRACK) continue; - if (tileElement->properties.track.ride_index != rideIndex) continue; + if (track_element_get_ride_index(tileElement) != rideIndex) continue; if (tileElement->base_height != z) continue; if (tileElement->properties.track.type != TRACK_ELEM_MAZE) continue; diff --git a/src/openrct2/world/Wall.cpp b/src/openrct2/world/Wall.cpp index ecafd1c6f7..80b9a1461b 100644 --- a/src/openrct2/world/Wall.cpp +++ b/src/openrct2/world/Wall.cpp @@ -69,7 +69,7 @@ static bool WallCheckObstructionWithTrack(rct_scenery_entry * wall, sint32 trackType = trackElement->properties.track.type; sint32 sequence = tile_element_get_track_sequence(trackElement); sint32 direction = (edge - tile_element_get_direction(trackElement)) & TILE_ELEMENT_DIRECTION_MASK; - Ride * ride = get_ride(trackElement->properties.track.ride_index); + Ride * ride = get_ride(track_element_get_ride_index(trackElement)); if (TrackIsAllowedWallEdges(ride->type, trackType, sequence, direction)) { diff --git a/src/openrct2/world/footpath.c b/src/openrct2/world/footpath.c index 92a6ba8927..7f0ef129eb 100644 --- a/src/openrct2/world/footpath.c +++ b/src/openrct2/world/footpath.c @@ -1264,7 +1264,7 @@ static void loc_6A6D7E( break; case TILE_ELEMENT_TYPE_TRACK: if (z == tileElement->base_height) { - Ride *ride = get_ride(tileElement->properties.track.ride_index); + Ride *ride = get_ride(track_element_get_ride_index(tileElement)); if (!ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_FLAT_RIDE)) { continue; } @@ -1279,7 +1279,7 @@ static void loc_6A6D7E( return; } if (query) { - neighbour_list_push(neighbourList, 1, direction, tileElement->properties.track.ride_index, 255); + neighbour_list_push(neighbourList, 1, direction, track_element_get_ride_index(tileElement), 255); } goto loc_6A6FD2; } @@ -1357,7 +1357,7 @@ static void loc_6A6C85( } if (tile_element_get_type(tileElement) == TILE_ELEMENT_TYPE_TRACK) { - Ride *ride = get_ride(tileElement->properties.track.ride_index); + Ride *ride = get_ride(track_element_get_ride_index(tileElement)); if (!ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_FLAT_RIDE)) { return; } @@ -2174,7 +2174,7 @@ static void footpath_remove_edges_towards(sint32 x, sint32 y, sint32 z0, sint32 void footpath_remove_edges_at(sint32 x, sint32 y, rct_tile_element *tileElement) { if (tile_element_get_type(tileElement) == TILE_ELEMENT_TYPE_TRACK) { - sint32 rideIndex = tileElement->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(tileElement); Ride *ride = get_ride(rideIndex); if (!ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_FLAT_RIDE)) return; diff --git a/src/openrct2/world/map.c b/src/openrct2/world/map.c index e6ccfbb00b..ec4e773948 100644 --- a/src/openrct2/world/map.c +++ b/src/openrct2/world/map.c @@ -1577,7 +1577,7 @@ static money32 map_set_land_height(sint32 flags, sint32 x, sint32 y, sint32 heig do{ if(tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; - sint32 rideIndex = tileElement->properties.track.ride_index; + sint32 rideIndex = track_element_get_ride_index(tileElement); sint32 maxHeight = get_ride_entry_by_ride(get_ride(rideIndex))->max_height; if(maxHeight == 0) maxHeight = RideData5[get_ride(rideIndex)->type].max_height; @@ -3165,7 +3165,7 @@ void map_obstruction_set_error_text(rct_tile_element *tileElement) errorStringId = STR_FOOTPATH_IN_THE_WAY; break; case TILE_ELEMENT_TYPE_TRACK: - ride = get_ride(tileElement->properties.track.ride_index); + ride = get_ride(track_element_get_ride_index(tileElement)); errorStringId = STR_X_IN_THE_WAY; set_format_arg(0, rct_string_id, ride->name); set_format_arg(2, uint32, ride->name_arguments); @@ -4497,7 +4497,7 @@ rct_tile_element *map_get_track_element_at_of_type_from_ride(sint32 x, sint32 y, do { if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; if (tileElement->base_height != z) continue; - if (tileElement->properties.track.ride_index != rideIndex) continue; + if (track_element_get_ride_index(tileElement) != rideIndex) continue; if (tileElement->properties.track.type != trackType) continue; return tileElement; @@ -4518,7 +4518,7 @@ rct_tile_element *map_get_track_element_at_from_ride(sint32 x, sint32 y, sint32 do { if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; if (tileElement->base_height != z) continue; - if (tileElement->properties.track.ride_index != rideIndex) continue; + if (track_element_get_ride_index(tileElement) != rideIndex) continue; return tileElement; } while (!tile_element_is_last_for_tile(tileElement++)); @@ -4540,7 +4540,7 @@ rct_tile_element *map_get_track_element_at_with_direction_from_ride(sint32 x, si do { if (tile_element_get_type(tileElement) != TILE_ELEMENT_TYPE_TRACK) continue; if (tileElement->base_height != z) continue; - if (tileElement->properties.track.ride_index != rideIndex) continue; + if (track_element_get_ride_index(tileElement) != rideIndex) continue; if (tile_element_get_direction(tileElement) != direction) continue; return tileElement; diff --git a/src/openrct2/world/tile_inspector.c b/src/openrct2/world/tile_inspector.c index c59855ba62..7970877c8d 100644 --- a/src/openrct2/world/tile_inspector.c +++ b/src/openrct2/world/tile_inspector.c @@ -599,7 +599,7 @@ sint32 tile_inspector_track_base_height_offset(sint32 x, sint32 y, sint32 elemen sint16 originY = y << 5; sint16 originZ = trackElement->base_height * 8; uint8 rotation = tile_element_get_direction(trackElement); - uint8 rideIndex = trackElement->properties.track.ride_index; + uint8 rideIndex = track_element_get_ride_index(trackElement); Ride* ride = get_ride(rideIndex); const rct_preview_track* trackBlock = get_track_def_from_ride(ride, type); trackBlock += tile_element_get_track_sequence(trackElement); @@ -731,7 +731,7 @@ sint32 tile_inspector_track_set_chain(sint32 x, sint32 y, sint32 elementIndex, b sint16 originY = y << 5; sint16 originZ = trackElement->base_height * 8; uint8 rotation = tile_element_get_direction(trackElement); - uint8 rideIndex = trackElement->properties.track.ride_index; + uint8 rideIndex = track_element_get_ride_index(trackElement); Ride* ride = get_ride(rideIndex); const rct_preview_track* trackBlock = get_track_def_from_ride(ride, type); trackBlock += tile_element_get_track_sequence(trackElement);