mirror of https://github.com/OpenTTD/OpenTTD
(svn r23705) -Codechange: cache the last processed station in FindStationsAroundTiles() in order to make the code a bit faster
parent
4af8c2d5e1
commit
a90b767995
|
@ -3407,12 +3407,19 @@ void FindStationsAroundTiles(const TileArea &location, StationList *stations)
|
||||||
if (max_x >= MapSizeX()) max_x = MapSizeX() - 1;
|
if (max_x >= MapSizeX()) max_x = MapSizeX() - 1;
|
||||||
if (max_y >= MapSizeY()) max_y = MapSizeY() - 1;
|
if (max_y >= MapSizeY()) max_y = MapSizeY() - 1;
|
||||||
|
|
||||||
|
StationID last = INVALID_STATION;
|
||||||
|
|
||||||
for (uint cy = min_y; cy < max_y; cy++) {
|
for (uint cy = min_y; cy < max_y; cy++) {
|
||||||
for (uint cx = min_x; cx < max_x; cx++) {
|
for (uint cx = min_x; cx < max_x; cx++) {
|
||||||
TileIndex cur_tile = TileXY(cx, cy);
|
TileIndex cur_tile = TileXY(cx, cy);
|
||||||
if (!IsTileType(cur_tile, MP_STATION)) continue;
|
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 */
|
/* st can be NULL in case of waypoints */
|
||||||
if (st == NULL) continue;
|
if (st == NULL) continue;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue