From 7f5f0fea42ab013f6b6db2b3d434fc2a3f8eb541 Mon Sep 17 00:00:00 2001 From: frosch Date: Wed, 15 Oct 2008 21:10:43 +0000 Subject: (svn r14469) -Fix [FS#2355]: Empty station spreads (e.g. from greyed station signs) were modified in test mode. --- src/station.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src') 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) -- cgit v1.2.3-70-g09d2