1
0
Fork 0

(svn r10480) -Fix: Don't allow building lighthouses and transmitters under bridges in the scenario editor, or during world generation.

release/0.6
maedhros 2007-07-08 18:40:15 +00:00
parent c9ef554e01
commit fc3764ef4b
2 changed files with 6 additions and 4 deletions

View File

@ -31,6 +31,7 @@
#include "variables.h" #include "variables.h"
#include "train.h" #include "train.h"
#include "roadveh.h" #include "roadveh.h"
#include "bridge_map.h"
#include "unmovable_map.h" #include "unmovable_map.h"
#include "string.h" #include "string.h"
#include "screenshot.h" #include "screenshot.h"
@ -1137,7 +1138,7 @@ static void PlaceProc_RockyArea(TileIndex tile)
static void PlaceProc_LightHouse(TileIndex tile) 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; return;
} }
@ -1148,7 +1149,7 @@ static void PlaceProc_LightHouse(TileIndex tile)
static void PlaceProc_Transmitter(TileIndex tile) 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; return;
} }

View File

@ -18,6 +18,7 @@
#include "economy.h" #include "economy.h"
#include "town.h" #include "town.h"
#include "sprite.h" #include "sprite.h"
#include "bridge_map.h"
#include "unmovable_map.h" #include "unmovable_map.h"
#include "variables.h" #include "variables.h"
#include "table/unmovable_land.h" #include "table/unmovable_land.h"
@ -358,7 +359,7 @@ void GenerateUnmovables()
do { do {
tile = RandomTile(); 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; if (IsRadioTowerNearby(tile)) continue;
MakeTransmitter(tile); MakeTransmitter(tile);
IncreaseGeneratingWorldProgress(GWP_UNMOVABLE); IncreaseGeneratingWorldProgress(GWP_UNMOVABLE);
@ -401,7 +402,7 @@ restart:
do { do {
if (--j == 0) goto restart; if (--j == 0) goto restart;
tile = TILE_MASK(tile + TileOffsByDiagDir(dir)); 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)); assert(tile == TILE_MASK(tile));