summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2008-10-15 21:10:43 +0000
committerfrosch <frosch@openttd.org>2008-10-15 21:10:43 +0000
commit3728d646245a1bfab35bbd6532d1b0d3d5289e93 (patch)
treeab26705a682a06aa5f89624c92d8066545a6f665
parent08d87c0739377bc52b8c4eb6aba3b58932dda667 (diff)
downloadopenttd-3728d646245a1bfab35bbd6532d1b0d3d5289e93.tar.xz
(svn r14469) -Fix [FS#2355]: Empty station spreads (e.g. from greyed station signs) were modified in test mode.
-rw-r--r--src/station.cpp10
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)