mirror of https://github.com/OpenRCT2/OpenRCT2.git
Implement more of handyman litter finding code.
This commit is contained in:
parent
9648b4f82a
commit
b2f756ef89
|
@ -591,8 +591,53 @@ static int staff_path_finding_handyman(rct_peep* peep) {
|
||||||
if (nearestLitterDist > 0x60){
|
if (nearestLitterDist > 0x60){
|
||||||
//goto 6bfd82
|
//goto 6bfd82
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rct_xy16 litterTile = {
|
||||||
|
.x = litter->x & 0xFFE0,
|
||||||
|
.y = litter->y & 0xFFE0
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!staff_is_location_in_patrol(peep, litterTile.x, litterTile.y)){
|
||||||
|
//goto 6bfd82
|
||||||
|
}
|
||||||
|
|
||||||
|
litterTile.x += 16;
|
||||||
|
litterTile.y += 16;
|
||||||
|
|
||||||
|
sint16 x_diff = litterTile.x - peep->x;
|
||||||
|
sint16 y_diff = litterTile.y - peep->y;
|
||||||
|
|
||||||
|
uint8 nextDirection = 0;
|
||||||
|
|
||||||
|
if (abs(x_diff) <= abs(y_diff)){
|
||||||
|
nextDirection = y_diff < 0 ? 3 : 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
nextDirection = x_diff < 0 ? 0 : 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
rct_xy16 nextTile = {
|
||||||
|
.x = (litter->x & 0xFFE0) - TileDirectionDelta[nextDirection].x;
|
||||||
|
.y = (litter->y & 0xFFE0) - TileDirectionDelta[nextDirection].y;
|
||||||
|
};
|
||||||
|
|
||||||
|
sint16 nextZ = ((peep->z + 8) & 0xFFF0) / 8;
|
||||||
|
|
||||||
|
rct_map_element* mapElement = map_get_first_element_at(nextTile.x / 32, nextTile.y / 32);
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (mapElement->base_height != nextZ)
|
||||||
|
continue;
|
||||||
|
if (map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_ENTRANCE ||
|
||||||
|
map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_TRACK){
|
||||||
|
//goto 6bfd82
|
||||||
|
}
|
||||||
|
} while(!map_element_is_last_for_tile(mapElement++));
|
||||||
|
|
||||||
|
// 6bfd13
|
||||||
}
|
}
|
||||||
//6bfd82
|
//6bfd82
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue