diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index c3bae429a1..d0bb748a6f 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -2625,3 +2625,65 @@ void track_element_set_colour_scheme(rct_tile_element * tileElement, uint8 colou tileElement->properties.track.colour &= ~0x3; tileElement->properties.track.colour |= (colourScheme & 0x3); } + + +void tile_element_set_station(rct_tile_element * tileElement, uint32 stationIndex) +{ + tileElement->properties.track.sequence &= ~MAP_ELEM_TRACK_SEQUENCE_STATION_INDEX_MASK; + tileElement->properties.track.sequence |= (stationIndex << 4); +} + +sint32 tile_element_get_track_sequence(const rct_tile_element * tileElement) +{ + return tileElement->properties.track.sequence & MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK; +} + +void tile_element_set_track_sequence(rct_tile_element * tileElement, sint32 trackSequence) +{ + tileElement->properties.track.sequence &= ~MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK; + tileElement->properties.track.sequence |= (trackSequence & MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK); +} + +bool tile_element_get_green_light(const rct_tile_element * tileElement) +{ + return (tileElement->properties.track.sequence & MAP_ELEM_TRACK_SEQUENCE_GREEN_LIGHT) != 0; +} + +void tile_element_set_green_light(rct_tile_element * tileElement, bool greenLight) +{ + tileElement->properties.track.sequence &= ~MAP_ELEM_TRACK_SEQUENCE_GREEN_LIGHT; + if (greenLight) + { + tileElement->properties.track.sequence |= MAP_ELEM_TRACK_SEQUENCE_GREEN_LIGHT; + } +} + +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) +{ + tileElement->properties.track.sequence = tile_element_get_track_sequence(tileElement) | ((speed >> 1) << 4); +} + +bool tile_element_is_taking_photo(const rct_tile_element * tileElement) +{ + return (tileElement->properties.track.sequence & MAP_ELEM_TRACK_SEQUENCE_TAKING_PHOTO_MASK) != 0; +} + +void tile_element_set_onride_photo_timeout(rct_tile_element * tileElement) +{ + tileElement->properties.track.sequence &= MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK; + tileElement->properties.track.sequence |= (3 << 4); +} + +void tile_element_decrement_onride_photo_timout(rct_tile_element * tileElement) +{ + // We should only touch the upper 4 bits, avoid underflow into the lower 4. + if (tileElement->properties.track.sequence & MAP_ELEM_TRACK_SEQUENCE_TAKING_PHOTO_MASK) + { + tileElement->properties.track.sequence -= (1 << 4); + } +} \ No newline at end of file diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 58f4ea489d..f8c9b94e0d 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -565,6 +565,17 @@ uint8 track_element_get_seat_rotation(const rct_tile_element * tileElement); void track_element_set_seat_rotation(rct_tile_element * tileElement, uint8 seatRotation); uint8 track_element_get_colour_scheme(const rct_tile_element * tileElement); void track_element_set_colour_scheme(rct_tile_element * tileElement, uint8 colourScheme); +sint32 tile_element_get_station(const rct_tile_element * tileElement); +void tile_element_set_station(rct_tile_element * tileElement, uint32 stationIndex); +sint32 tile_element_get_track_sequence(const rct_tile_element * tileElement); +void tile_element_set_track_sequence(rct_tile_element * tileElement, sint32 trackSequence); +bool tile_element_get_green_light(const rct_tile_element * tileElement); +void tile_element_set_green_light(rct_tile_element * tileElement, bool greenLight); +sint32 tile_element_get_brake_booster_speed(const rct_tile_element *tileElement); +void tile_element_set_brake_booster_speed(rct_tile_element *tileElement, sint32 speed); +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); #ifdef __cplusplus } diff --git a/src/openrct2/world/map.c b/src/openrct2/world/map.c index 9b97cd9195..e6ccfbb00b 100644 --- a/src/openrct2/world/map.c +++ b/src/openrct2/world/map.c @@ -2871,67 +2871,6 @@ sint32 tile_element_get_station(const rct_tile_element * tileElement) return (tileElement->properties.track.sequence & MAP_ELEM_TRACK_SEQUENCE_STATION_INDEX_MASK) >> 4; } -void tile_element_set_station(rct_tile_element * tileElement, uint32 stationIndex) -{ - tileElement->properties.track.sequence &= ~MAP_ELEM_TRACK_SEQUENCE_STATION_INDEX_MASK; - tileElement->properties.track.sequence |= (stationIndex << 4); -} - -sint32 tile_element_get_track_sequence(const rct_tile_element * tileElement) -{ - return tileElement->properties.track.sequence & MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK; -} - -void tile_element_set_track_sequence(rct_tile_element * tileElement, sint32 trackSequence) -{ - tileElement->properties.track.sequence &= ~MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK; - tileElement->properties.track.sequence |= (trackSequence & MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK); -} - -bool tile_element_get_green_light(const rct_tile_element * tileElement) -{ - return (tileElement->properties.track.sequence & MAP_ELEM_TRACK_SEQUENCE_GREEN_LIGHT) != 0; -} - -void tile_element_set_green_light(rct_tile_element * tileElement, bool greenLight) -{ - tileElement->properties.track.sequence &= ~MAP_ELEM_TRACK_SEQUENCE_GREEN_LIGHT; - if (greenLight) - { - tileElement->properties.track.sequence |= MAP_ELEM_TRACK_SEQUENCE_GREEN_LIGHT; - } -} - -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) -{ - tileElement->properties.track.sequence = tile_element_get_track_sequence(tileElement) | ((speed >> 1) << 4); -} - -bool tile_element_is_taking_photo(const rct_tile_element * tileElement) -{ - return (tileElement->properties.track.sequence & MAP_ELEM_TRACK_SEQUENCE_TAKING_PHOTO_MASK) != 0; -} - -void tile_element_set_onride_photo_timeout(rct_tile_element * tileElement) -{ - tileElement->properties.track.sequence &= MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK; - tileElement->properties.track.sequence |= (3 << 4); -} - -void tile_element_decrement_onride_photo_timout(rct_tile_element * tileElement) -{ - // We should only touch the upper 4 bits, avoid underflow into the lower 4. - if (tileElement->properties.track.sequence & MAP_ELEM_TRACK_SEQUENCE_TAKING_PHOTO_MASK) - { - tileElement->properties.track.sequence -= (1 << 4); - } -} - /** * * rct2: 0x0068B280 diff --git a/src/openrct2/world/map.h b/src/openrct2/world/map.h index a35dda29cb..09d52ab649 100644 --- a/src/openrct2/world/map.h +++ b/src/openrct2/world/map.h @@ -429,17 +429,6 @@ bool map_is_location_owned(sint32 x, sint32 y, sint32 z); bool map_is_location_in_park(sint32 x, sint32 y); bool map_is_location_owned_or_has_rights(sint32 x, sint32 y); bool map_surface_is_blocked(sint16 x, sint16 y); -sint32 tile_element_get_station(const rct_tile_element * tileElement); -void tile_element_set_station(rct_tile_element * tileElement, uint32 stationIndex); -sint32 tile_element_get_track_sequence(const rct_tile_element * tileElement); -void tile_element_set_track_sequence(rct_tile_element * tileElement, sint32 trackSequence); -bool tile_element_get_green_light(const rct_tile_element * tileElement); -void tile_element_set_green_light(rct_tile_element * tileElement, bool greenLight); -sint32 tile_element_get_brake_booster_speed(const rct_tile_element *tileElement); -void tile_element_set_brake_booster_speed(rct_tile_element *tileElement, sint32 speed); -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); void tile_element_remove(rct_tile_element *tileElement); void map_remove_all_rides(); void map_invalidate_map_selection_tiles();