diff options
-rw-r--r-- | src/station.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/station.cpp b/src/station.cpp index 356bb0151..97ad6c712 100644 --- a/src/station.cpp +++ b/src/station.cpp @@ -286,9 +286,10 @@ bool StationRect::BeforeAddTile(TileIndex tile, StationRectMode mode) int y = TileY(tile); if (IsEmpty()) { /* we are adding the first station tile */ - left = right = x; - top = bottom = y; - + if (mode != ADD_TEST) { + left = right = x; + top = bottom = y; + } } else if (!PtInExtendedRect(x, y)) { /* current rect is not empty and new point is outside this rect */ /* make new spread-out rectangle */ @@ -316,7 +317,8 @@ bool StationRect::BeforeAddTile(TileIndex tile, StationRectMode mode) bool StationRect::BeforeAddRect(TileIndex tile, int w, int h, StationRectMode mode) { - return BeforeAddTile(tile, mode) && BeforeAddTile(TILE_ADDXY(tile, w - 1, h - 1), mode); + return (mode == ADD_FORCE || (w <= _settings_game.station.station_spread && h <= _settings_game.station.station_spread)) && // important when the old rect is completely inside the new rect, resp. the old one was empty + BeforeAddTile(tile, mode) && BeforeAddTile(TILE_ADDXY(tile, w - 1, h - 1), mode); } /*static*/ bool StationRect::ScanForStationTiles(StationID st_id, int left_a, int top_a, int right_a, int bottom_a) |