changeset 18856:f302f5c1e8bf draft

(svn r23705) -Codechange: cache the last processed station in FindStationsAroundTiles() in order to make the code a bit faster
author smatz <smatz@openttd.org>
date Sun, 01 Jan 2012 17:32:45 +0000
parents a0d7e20ebafe
children 842a92695812
files src/station_cmd.cpp
diffstat 1 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -3407,12 +3407,19 @@
 	if (max_x >= MapSizeX()) max_x = MapSizeX() - 1;
 	if (max_y >= MapSizeY()) max_y = MapSizeY() - 1;
 
+	StationID last = INVALID_STATION;
+
 	for (uint cy = min_y; cy < max_y; cy++) {
 		for (uint cx = min_x; cx < max_x; cx++) {
 			TileIndex cur_tile = TileXY(cx, cy);
 			if (!IsTileType(cur_tile, MP_STATION)) continue;
 
-			Station *st = Station::GetByTile(cur_tile);
+			StationID sid = GetStationIndex(cur_tile);
+			/* Stop early if we met the same station again. */
+			if (sid == last) continue;
+			last = sid;
+
+			Station *st = Station::GetIfValid(sid);
 			/* st can be NULL in case of waypoints */
 			if (st == NULL) continue;