Move getting track sequence to struct methods

This commit is contained in:
Gymnasiast 2018-09-17 22:10:15 +02:00
parent 3b80d049ef
commit ae4c464ce7
13 changed files with 55 additions and 55 deletions

View File

@ -2425,7 +2425,7 @@ static void sub_6CBCE2(
_tempTrackTileElement.base_height = baseZ;
_tempTrackTileElement.clearance_height = clearanceZ;
_tempTrackTileElement.AsTrack()->SetTrackType(trackType);
tile_element_set_track_sequence(&_tempTrackTileElement, trackBlock->index);
_tempTrackTileElement.AsTrack()->SetSequenceIndex(trackBlock->index);
track_element_clear_cable_lift(&_tempTrackTileElement);
track_element_set_inverted(&_tempTrackTileElement, (edx & 0x20000) ? true : false);
track_element_set_colour_scheme(&_tempTrackTileElement, RIDE_COLOUR_SCHEME_MAIN);

View File

@ -1853,7 +1853,7 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_RIDE_NAME, gCommonFormatArgs, COLOUR_DARK_GREEN, x, y + 22);
// Track
int16_t trackType = tileElement->AsTrack()->GetTrackType();
int16_t sequenceNumber = tile_element_get_track_sequence(tileElement);
int16_t sequenceNumber = tileElement->AsTrack()->GetSequenceIndex();
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_PIECE_ID, &trackType, COLOUR_DARK_GREEN, x, y + 33);
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_SEQUENCE, &sequenceNumber, COLOUR_DARK_GREEN, x, y + 44);

View File

@ -317,7 +317,7 @@ private:
{
money32 removePrice = game_do_command(
x, GAME_COMMAND_FLAG_5 | GAME_COMMAND_FLAG_APPLY | (rotation << 8), y,
type | (tile_element_get_track_sequence(it.element) << 8), GAME_COMMAND_REMOVE_TRACK, z, 0);
type | (it.element->AsTrack()->GetSequenceIndex() << 8), GAME_COMMAND_REMOVE_TRACK, z, 0);
if (removePrice == MONEY32_UNDEFINED)
tile_element_remove(it.element);

View File

@ -558,7 +558,7 @@ bool track_block_get_next_from_zero(
if (track_element_get_ride_index(tileElement) != rideIndex)
continue;
if (tile_element_get_track_sequence(tileElement) != 0)
if (tileElement->AsTrack()->GetSequenceIndex() != 0)
continue;
if (tileElement->IsGhost() != isGhost)
@ -607,7 +607,7 @@ bool track_block_get_next(CoordsXYE* input, CoordsXYE* output, int32_t* z, int32
Ride* ride = get_ride(rideIndex);
const rct_preview_track* trackBlock = get_track_def_from_ride(ride, input->element->AsTrack()->GetTrackType());
uint8_t sequence = tile_element_get_track_sequence(input->element);
uint8_t sequence = input->element->AsTrack()->GetSequenceIndex();
trackBlock += sequence;
const rct_track_coordinates* trackCoordinate = get_track_coord_from_ride(ride, input->element->AsTrack()->GetTrackType());
@ -697,7 +697,7 @@ bool track_block_get_previous_from_zero(
const rct_preview_track* nextTrackBlock = get_track_def_from_ride(ride, tileElement->AsTrack()->GetTrackType());
const rct_track_coordinates* nextTrackCoordinate = get_track_coord_from_ride(ride, tileElement->AsTrack()->GetTrackType());
nextTrackBlock += tile_element_get_track_sequence(tileElement);
nextTrackBlock += tileElement->AsTrack()->GetSequenceIndex();
if ((nextTrackBlock + 1)->index != 255)
continue;
@ -768,7 +768,7 @@ bool track_block_get_previous(int32_t x, int32_t y, rct_tile_element* tileElemen
Ride* ride = get_ride(rideIndex);
const rct_preview_track* trackBlock = get_track_def_from_ride(ride, tileElement->AsTrack()->GetTrackType());
uint8_t sequence = tile_element_get_track_sequence(tileElement);
uint8_t sequence = tileElement->AsTrack()->GetSequenceIndex();
trackBlock += sequence;
const rct_track_coordinates* trackCoordinate = get_track_coord_from_ride(ride, tileElement->AsTrack()->GetTrackType());
@ -1290,7 +1290,7 @@ int32_t sub_6C683D(
continue;
successTileElement = tileElement;
if (tile_element_get_track_sequence(tileElement) == 0)
if (tileElement->AsTrack()->GetSequenceIndex() == 0)
break;
} while (!(tileElement++)->IsLastForTile());
@ -1301,7 +1301,7 @@ int32_t sub_6C683D(
// Possibly z should be & 0xF8
const rct_preview_track* trackBlock = get_track_def_from_ride_index(track_element_get_ride_index(tileElement), type);
int32_t sequence = tile_element_get_track_sequence(tileElement);
int32_t sequence = tileElement->AsTrack()->GetSequenceIndex();
uint8_t mapDirection = tileElement->GetDirection();
switch (mapDirection)
@ -1366,7 +1366,7 @@ int32_t sub_6C683D(
if ((tileElement->GetDirection()) != direction)
continue;
if (tile_element_get_track_sequence(tileElement) != trackBlock[i].index)
if (tileElement->AsTrack()->GetSequenceIndex() != trackBlock[i].index)
continue;
if (type == tileElement->AsTrack()->GetTrackType())
@ -1472,7 +1472,7 @@ void ride_remove_provisional_track_piece()
int32_t flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_5
| GAME_COMMAND_FLAG_GHOST;
uint8_t trackType = next_track.element->AsTrack()->GetTrackType();
int32_t trackSequence = tile_element_get_track_sequence(next_track.element);
int32_t trackSequence = next_track.element->AsTrack()->GetSequenceIndex();
game_do_command(
next_track.x, flags | ((direction & 3) << 8), next_track.y, trackType | (trackSequence << 8),
GAME_COMMAND_REMOVE_TRACK, z, 0);
@ -5140,7 +5140,7 @@ static void ride_create_vehicles_find_first_block(Ride* ride, CoordsXYE* outXYEl
continue;
if (tileElement->AsTrack()->GetTrackType() != trackType)
continue;
if (tile_element_get_track_sequence(tileElement) != 0)
if (tileElement->AsTrack()->GetSequenceIndex() != 0)
continue;
if (tileElement->base_height != trackBeginEnd.begin_z / 8)
continue;
@ -7157,7 +7157,7 @@ void ride_get_entrance_or_exit_position_from_screen_position(
int32_t eax = (direction + 2 - tileElement->GetDirection()) & TILE_ELEMENT_DIRECTION_MASK;
if (FlatRideTrackSequenceProperties[tileElement->AsTrack()->GetTrackType()]
[tile_element_get_track_sequence(tileElement)]
[tileElement->AsTrack()->GetSequenceIndex()]
& (1 << eax))
{
gRideEntranceExitPlaceDirection = direction ^ 2;
@ -8010,7 +8010,7 @@ void sub_6CB945(int32_t rideIndex)
continue;
if (track_element_get_ride_index(tileElement) != rideIndex)
continue;
if (tile_element_get_track_sequence(tileElement) != 0)
if (tileElement->AsTrack()->GetSequenceIndex() != 0)
continue;
if (!(TrackSequenceProperties[tileElement->AsTrack()->GetTrackType()][0] & TRACK_SEQUENCE_FLAG_ORIGIN))
continue;
@ -8140,7 +8140,7 @@ void sub_6CB945(int32_t rideIndex)
continue;
uint8_t trackType = trackElement->AsTrack()->GetTrackType();
uint8_t trackSequence = tile_element_get_track_sequence(trackElement);
uint8_t trackSequence = trackElement->AsTrack()->GetSequenceIndex();
uint8_t direction = (tileElement->GetDirection() - trackElement->GetDirectionWithOffset(2)) & 3;

View File

@ -210,7 +210,7 @@ static void ride_ratings_update_state_2()
continue;
if (trackType == 255
|| (tile_element_get_track_sequence(tileElement) == 0 && trackType == tileElement->AsTrack()->GetTrackType()))
|| (tileElement->AsTrack()->GetSequenceIndex() == 0 && trackType == tileElement->AsTrack()->GetTrackType()))
{
if (trackType == TRACK_ELEM_END_STATION)
{
@ -601,7 +601,7 @@ static void ride_ratings_score_close_proximity(rct_tile_element* inputTileElemen
int32_t trackType = tileElement->AsTrack()->GetTrackType();
if (trackType == TRACK_ELEM_LEFT_VERTICAL_LOOP || trackType == TRACK_ELEM_RIGHT_VERTICAL_LOOP)
{
int32_t sequence = tile_element_get_track_sequence(tileElement);
int32_t sequence = tileElement->AsTrack()->GetSequenceIndex();
if (sequence == 3 || sequence == 6)
{
if (tileElement->base_height - inputTileElement->clearance_height <= 10)

View File

@ -1457,7 +1457,7 @@ static money32 track_place(
}
tileElement->type = map_type;
tile_element_set_track_sequence(tileElement, trackBlock->index);
tileElement->AsTrack()->SetSequenceIndex(trackBlock->index);
track_element_set_ride_index(tileElement, rideIndex);
tileElement->AsTrack()->SetTrackType(type);
@ -1609,7 +1609,7 @@ static money32 track_remove(
if ((tileElement->GetDirection()) != rotation)
continue;
if (tile_element_get_track_sequence(tileElement) != sequence)
if (tileElement->AsTrack()->GetSequenceIndex() != sequence)
continue;
if (tileElement->IsGhost() != isGhost)
@ -1648,7 +1648,7 @@ static money32 track_remove(
Ride* ride = get_ride(rideIndex);
const rct_preview_track* trackBlock = get_track_def_from_ride(ride, type);
trackBlock += tile_element_get_track_sequence(tileElement);
trackBlock += tileElement->AsTrack()->GetSequenceIndex();
uint8_t originDirection = tileElement->GetDirection();
switch (originDirection)
@ -1722,7 +1722,7 @@ static money32 track_remove(
if (tileElement->GetDirection() != rotation)
continue;
if (tile_element_get_track_sequence(tileElement) != trackBlock->index)
if (tileElement->AsTrack()->GetSequenceIndex() != trackBlock->index)
continue;
if (tileElement->AsTrack()->GetTrackType() != type)
@ -1751,7 +1751,7 @@ static money32 track_remove(
entranceDirections = TrackSequenceProperties[type][0];
}
if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN && (tile_element_get_track_sequence(tileElement) == 0))
if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN && (tileElement->AsTrack()->GetSequenceIndex() == 0))
{
if (!track_remove_station_element(x, y, z / 8, rotation, rideIndex, 0))
{
@ -1776,7 +1776,7 @@ static money32 track_remove(
if (!(flags & GAME_COMMAND_FLAG_APPLY))
continue;
if (entranceDirections & (1 << 4) && (tile_element_get_track_sequence(tileElement) == 0))
if (entranceDirections & (1 << 4) && (tileElement->AsTrack()->GetSequenceIndex() == 0))
{
if (!track_remove_station_element(x, y, z / 8, rotation, rideIndex, GAME_COMMAND_FLAG_APPLY))
{
@ -2250,15 +2250,15 @@ void tile_element_set_station(rct_tile_element* tileElement, uint32_t stationInd
tileElement->properties.track.sequence |= (stationIndex << 4);
}
int32_t tile_element_get_track_sequence(const rct_tile_element* tileElement)
uint8_t TrackElement::GetSequenceIndex() const
{
return tileElement->properties.track.sequence & MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK;
return sequence & MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK;
}
void tile_element_set_track_sequence(rct_tile_element* tileElement, int32_t trackSequence)
void TrackElement::SetSequenceIndex(uint8_t newSequenceIndex)
{
tileElement->properties.track.sequence &= ~MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK;
tileElement->properties.track.sequence |= (trackSequence & MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK);
sequence &= ~MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK;
sequence |= (newSequenceIndex & MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK);
}
bool tile_element_get_green_light(const rct_tile_element* tileElement)
@ -2282,7 +2282,8 @@ int32_t tile_element_get_brake_booster_speed(const rct_tile_element* tileElement
void tile_element_set_brake_booster_speed(rct_tile_element* tileElement, int32_t speed)
{
tileElement->properties.track.sequence = tile_element_get_track_sequence(tileElement) | ((speed >> 1) << 4);
tileElement->properties.track.sequence &= ~0b11110000;
tileElement->properties.track.sequence |= ((speed >> 1) << 4);
}
bool tile_element_is_taking_photo(const rct_tile_element* tileElement)

View File

@ -572,8 +572,6 @@ uint8_t track_element_get_colour_scheme(const rct_tile_element* tileElement);
void track_element_set_colour_scheme(rct_tile_element* tileElement, uint8_t colourScheme);
int32_t tile_element_get_station(const rct_tile_element* tileElement);
void tile_element_set_station(rct_tile_element* tileElement, uint32_t stationIndex);
int32_t tile_element_get_track_sequence(const rct_tile_element* tileElement);
void tile_element_set_track_sequence(rct_tile_element* tileElement, int32_t trackSequence);
bool tile_element_get_green_light(const rct_tile_element* tileElement);
void tile_element_set_green_light(rct_tile_element* tileElement, bool greenLight);
int32_t tile_element_get_brake_booster_speed(const rct_tile_element* tileElement);

View File

@ -2163,7 +2163,7 @@ void track_paint(paint_session* session, uint8_t direction, int32_t height, cons
&& !(gCurrentViewportFlags & VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES))
{
int32_t trackType = tileElement->AsTrack()->GetTrackType();
int32_t trackSequence = tile_element_get_track_sequence(tileElement);
int32_t trackSequence = tileElement->AsTrack()->GetSequenceIndex();
int32_t trackColourScheme = track_element_get_colour_scheme(tileElement);
if ((gCurrentViewportFlags & VIEWPORT_FLAG_TRACK_HEIGHTS) && dpi->zoom_level == 0)

View File

@ -1371,7 +1371,7 @@ static void loc_6A6D7E(
}
const uint8_t trackType = tileElement->AsTrack()->GetTrackType();
const uint8_t trackSequence = tile_element_get_track_sequence(tileElement);
const uint8_t trackSequence = tileElement->AsTrack()->GetSequenceIndex();
if (!(FlatRideTrackSequenceProperties[trackType][trackSequence] & TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH))
{
return;
@ -1498,7 +1498,7 @@ static void loc_6A6C85(
return;
}
const uint8_t trackType = tileElement->AsTrack()->GetTrackType();
const uint8_t trackSequence = tile_element_get_track_sequence(tileElement);
const uint8_t trackSequence = tileElement->AsTrack()->GetSequenceIndex();
if (!(FlatRideTrackSequenceProperties[trackType][trackSequence] & TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH))
{
return;
@ -2475,7 +2475,7 @@ bool tile_element_wants_path_connection_towards(TileCoordsXYZD coords, const rct
break;
const uint8_t trackType = tileElement->AsTrack()->GetTrackType();
const uint8_t trackSequence = tile_element_get_track_sequence(tileElement);
const uint8_t trackSequence = tileElement->AsTrack()->GetSequenceIndex();
if (FlatRideTrackSequenceProperties[trackType][trackSequence] & TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH)
{
uint16_t dx = ((coords.direction - tileElement->GetDirection()) & TILE_ELEMENT_DIRECTION_MASK);

View File

@ -4669,7 +4669,7 @@ rct_tile_element* map_get_track_element_at_of_type_seq(int32_t x, int32_t y, int
continue;
if (tileElement->AsTrack()->GetTrackType() != trackType)
continue;
if (tile_element_get_track_sequence(tileElement) != sequence)
if (tileElement->AsTrack()->GetSequenceIndex() != sequence)
continue;
return tileElement;

View File

@ -743,7 +743,7 @@ int32_t tile_inspector_track_base_height_offset(int32_t x, int32_t y, int32_t el
uint8_t 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);
trackBlock += trackElement->AsTrack()->GetSequenceIndex();
uint8_t originDirection = trackElement->GetDirection();
switch (originDirection)
@ -807,10 +807,10 @@ int32_t tile_inspector_track_base_height_offset(int32_t x, int32_t y, int32_t el
if (tileElement->GetType() != TILE_ELEMENT_TYPE_TRACK)
continue;
if ((tileElement->GetDirection()) != rotation)
if (tileElement->GetDirection() != rotation)
continue;
if (tile_element_get_track_sequence(tileElement) != trackBlock->index)
if (tileElement->AsTrack()->GetSequenceIndex() != trackBlock->index)
continue;
if (tileElement->AsTrack()->GetTrackType() != type)
@ -876,7 +876,7 @@ int32_t tile_inspector_track_set_chain(
uint8_t 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);
trackBlock += trackElement->AsTrack()->GetSequenceIndex();
uint8_t originDirection = trackElement->GetDirection();
switch (originDirection)
@ -940,10 +940,10 @@ int32_t tile_inspector_track_set_chain(
if (tileElement->GetType() != TILE_ELEMENT_TYPE_TRACK)
continue;
if ((tileElement->GetDirection()) != rotation)
if (tileElement->GetDirection() != rotation)
continue;
if (tile_element_get_track_sequence(tileElement) != trackBlock->index)
if (tileElement->AsTrack()->GetSequenceIndex() != trackBlock->index)
continue;
if (tileElement->AsTrack()->GetTrackType() != type)

View File

@ -63,7 +63,7 @@ static bool WallCheckObstructionWithTrack(
rct_scenery_entry* wall, int32_t z0, int32_t edge, rct_tile_element* trackElement, bool* wallAcrossTrack)
{
int32_t trackType = trackElement->AsTrack()->GetTrackType();
int32_t sequence = tile_element_get_track_sequence(trackElement);
int32_t sequence = trackElement->AsTrack()->GetSequenceIndex();
int32_t direction = (edge - trackElement->GetDirection()) & TILE_ELEMENT_DIRECTION_MASK;
Ride* ride = get_ride(track_element_get_ride_index(trackElement));

View File

@ -185,17 +185,6 @@ void tile_element_set_station(rct_tile_element* tileElement, uint32_t stationInd
tileElement->properties.track.sequence |= (stationIndex << 4);
}
int32_t 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, int 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;
@ -217,7 +206,8 @@ int tile_element_get_brake_booster_speed(const rct_tile_element* tileElement)
void tile_element_set_brake_booster_speed(rct_tile_element* tileElement, int speed)
{
tileElement->properties.track.sequence = tile_element_get_track_sequence(tileElement) | ((speed >> 1) << 4);
tileElement->properties.track.sequence &= ~0b11110000;
tileElement->properties.track.sequence |= ((speed >> 1) << 4);
}
bool tile_element_is_taking_photo(const rct_tile_element* tileElement)
@ -302,6 +292,17 @@ void TrackElement::SetTrackType(uint8_t newType)
trackType = newType;
}
uint8_t TrackElement::GetSequenceIndex() const
{
return sequence & MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK;
}
void TrackElement::SetSequenceIndex(uint8_t newSequenceIndex)
{
sequence &= ~MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK;
sequence |= (newSequenceIndex & MAP_ELEM_TRACK_SEQUENCE_SEQUENCE_MASK);
}
uint8_t track_element_get_ride_index(const rct_tile_element* tileElement)
{
return tileElement->properties.track.ride_index;