Mercurial > hg > openttd
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;