(svn r14469) -Fix [FS#2355]: Empty station spreads (e.g. from greyed station signs) were modified in test mode.
authorfrosch
Wed, 15 Oct 2008 21:10:43 +0000
changeset 10241 06397873be0d
parent 10240 c2d9e204664b
child 10242 91d0409b7d41
(svn r14469) -Fix [FS#2355]: Empty station spreads (e.g. from greyed station signs) were modified in test mode.
src/station.cpp
--- a/src/station.cpp	Wed Oct 15 17:40:39 2008 +0000
+++ b/src/station.cpp	Wed Oct 15 21:10:43 2008 +0000
@@ -286,9 +286,10 @@
 	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::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)