mirror of https://github.com/OpenRCT2/OpenRCT2.git
Fix #6100: Paths don't connect to exit
Regression from db438a27b7
, % does not work on negative numbers.
This commit is contained in:
parent
4db0ceaccd
commit
6b48f4344e
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue