(svn r16547) -Codechange: make CircularTileSearch a tiny bit faster

pull/155/head
smatz 15 years ago
parent 55b1e701e4
commit ac991bff90

@ -307,12 +307,17 @@ bool CircularTileSearch(TileIndex *tile, uint radius, uint w, uint h, TestTileOn
uint extent[DIAGDIR_END] = { w, h, w, h };
for (uint n = 0; n < radius; n++) {
for (DiagDirection dir = DIAGDIR_NE; dir < DIAGDIR_END; dir++) {
for (DiagDirection dir = DIAGDIR_BEGIN; dir < DIAGDIR_END; dir++) {
/* Is the tile within the map? */
for (uint j = extent[dir] + n * 2 + 1; j != 0; j--) {
if (x <= MapMaxX() && y <= MapMaxY() && ///< Is the tile within the map?
proc(TileXY(x, y), user_data)) { ///< Is the callback successful?
*tile = TileXY(x, y);
return true; ///< then stop the search
if (x < MapSizeX() && y < MapSizeY()) {
TileIndex t = TileXY(x, y);
/* Is the callback successful? */
if (proc(t, user_data)) {
/* Stop the search */
*tile = t;
return true;
}
}
/* Step to the next 'neighbour' in the circular line */

Loading…
Cancel
Save