changeset 12131:81033db94328 draft

(svn r16547) -Codechange: make CircularTileSearch a tiny bit faster
author smatz <smatz@openttd.org>
date Tue, 09 Jun 2009 23:34:48 +0000
parents 4d1083a76bb1
children e54f50d426de
files src/map.cpp
diffstat 1 files changed, 10 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -307,12 +307,17 @@
 	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 */