(svn r10480) -Fix: Don't allow building lighthouses and transmitters under bridges in the scenario editor, or during world generation.
authormaedhros
Sun, 08 Jul 2007 18:40:15 +0000
changeset 7202 dc312a87f450
parent 7201 f2ecafa0f626
child 7203 39f68ddb39cc
(svn r10480) -Fix: Don't allow building lighthouses and transmitters under bridges in the scenario editor, or during world generation.
src/main_gui.cpp
src/unmovable_cmd.cpp
--- a/src/main_gui.cpp	Sun Jul 08 17:45:36 2007 +0000
+++ b/src/main_gui.cpp	Sun Jul 08 18:40:15 2007 +0000
@@ -31,6 +31,7 @@
 #include "variables.h"
 #include "train.h"
 #include "roadveh.h"
+#include "bridge_map.h"
 #include "unmovable_map.h"
 #include "string.h"
 #include "screenshot.h"
@@ -1137,7 +1138,7 @@
 
 static void PlaceProc_LightHouse(TileIndex tile)
 {
-	if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL))) {
+	if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL)) || IsBridgeAbove(tile)) {
 		return;
 	}
 
@@ -1148,7 +1149,7 @@
 
 static void PlaceProc_Transmitter(TileIndex tile)
 {
-	if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL))) {
+	if (!IsTileType(tile, MP_CLEAR) || IsSteepSlope(GetTileSlope(tile, NULL)) || IsBridgeAbove(tile)) {
 		return;
 	}
 
--- a/src/unmovable_cmd.cpp	Sun Jul 08 17:45:36 2007 +0000
+++ b/src/unmovable_cmd.cpp	Sun Jul 08 18:40:15 2007 +0000
@@ -18,6 +18,7 @@
 #include "economy.h"
 #include "town.h"
 #include "sprite.h"
+#include "bridge_map.h"
 #include "unmovable_map.h"
 #include "variables.h"
 #include "table/unmovable_land.h"
@@ -358,7 +359,7 @@
 
 	do {
 		tile = RandomTile();
-		if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h >= TILE_HEIGHT * 4) {
+		if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h >= TILE_HEIGHT * 4 && !IsBridgeAbove(tile)) {
 			if (IsRadioTowerNearby(tile)) continue;
 			MakeTransmitter(tile);
 			IncreaseGeneratingWorldProgress(GWP_UNMOVABLE);
@@ -401,7 +402,7 @@
 		do {
 			if (--j == 0) goto restart;
 			tile = TILE_MASK(tile + TileOffsByDiagDir(dir));
-		} while (!(IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h <= TILE_HEIGHT * 2));
+		} while (!(IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == SLOPE_FLAT && h <= TILE_HEIGHT * 2 && !IsBridgeAbove(tile)));
 
 		assert(tile == TILE_MASK(tile));