Fix #6100: Paths don't connect to exit

Regression from db438a27b7, % does not work on negative numbers.
This commit is contained in:
Ted John 2017-08-06 00:18:32 +01:00
parent 4db0ceaccd
commit 6b48f4344e
4 changed files with 6 additions and 6 deletions

View File

@ -71,7 +71,7 @@ static bool WallCheckObstructionWithTrack(rct_scenery_entry * wall,
{
sint32 trackType = trackElement->properties.track.type;
sint32 sequence = map_element_get_track_sequence(trackElement);
sint32 direction = (edge - map_element_get_direction(trackElement)) % 4;
sint32 direction = (edge - map_element_get_direction(trackElement)) & MAP_ELEMENT_DIRECTION_MASK;
rct_ride * ride = get_ride(trackElement->properties.track.ride_index);
if (TrackIsAllowedWallEdges(ride->type, trackType, sequence, direction))
@ -223,7 +223,7 @@ static bool WallCheckObstruction(rct_scenery_entry * wall,
entry = get_large_scenery_entry(entryType);
tile = &entry->large_scenery.tiles[sequence];
{
sint32 direction = ((edge - map_element_get_direction(mapElement)) % 4) + 8;
sint32 direction = ((edge - map_element_get_direction(mapElement)) & MAP_ELEMENT_DIRECTION_MASK) + 8;
if (!(tile->var_7 & (1 << direction)))
{
map_obstruction_set_error_text(mapElement);

View File

@ -1208,7 +1208,7 @@ static void loc_6A6D7E(
break;
case MAP_ELEMENT_TYPE_ENTRANCE:
if (z == mapElement->base_height) {
if (entrance_has_direction(mapElement, ((direction - map_element_get_direction(mapElement)) % 4) ^ 2)) {
if (entrance_has_direction(mapElement, ((direction - map_element_get_direction(mapElement)) & MAP_ELEMENT_DIRECTION_MASK) ^ 2)) {
if (query) {
neighbour_list_push(neighbourList, 8, direction, mapElement->properties.entrance.ride_index, mapElement->properties.entrance.index);
} else {
@ -1288,7 +1288,7 @@ static void loc_6A6C85(
if (!(FlatRideTrackSequenceProperties[trackType][trackSequence] & TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH)) {
return;
}
uint16 dx = (direction - map_element_get_direction(mapElement)) % 4;
uint16 dx = (direction - map_element_get_direction(mapElement)) & MAP_ELEMENT_DIRECTION_MASK;
if (!(FlatRideTrackSequenceProperties[trackType][trackSequence] & (1 << dx))) {
return;
}

View File

@ -280,7 +280,7 @@ sint32 map_element_get_direction(const rct_map_element *element)
sint32 map_element_get_direction_with_offset(const rct_map_element *element, uint8 offset)
{
return ((element->type & MAP_ELEMENT_DIRECTION_MASK) + offset) % 4;
return ((element->type & MAP_ELEMENT_DIRECTION_MASK) + offset) & MAP_ELEMENT_DIRECTION_MASK;
}
sint32 map_element_get_terrain(const rct_map_element *element)

View File

@ -130,7 +130,7 @@ int map_element_get_direction(const rct_map_element *element) {
}
int map_element_get_direction_with_offset(const rct_map_element *element, uint8 offset) {
return ((element->type & MAP_ELEMENT_DIRECTION_MASK) + offset) % 4;
return ((element->type & MAP_ELEMENT_DIRECTION_MASK) + offset) & MAP_ELEMENT_DIRECTION_MASK;
}
rct_map_element *map_get_first_element_at(int x, int y) {