(svn r20909) -Fix [FS#4137]: don't see coasts as water for object construction

This commit is contained in:
rubidium 2010-10-08 21:08:38 +00:00
parent 322e4ab86f
commit 7bbc19288f
2 changed files with 11 additions and 1 deletions

View File

@ -166,7 +166,7 @@ CommandCost CmdBuildObject(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
bool allow_water = (spec->flags & (OBJECT_FLAG_BUILT_ON_WATER | OBJECT_FLAG_NOT_ON_LAND)) != 0;
bool allow_ground = (spec->flags & OBJECT_FLAG_NOT_ON_LAND) == 0;
TILE_AREA_LOOP(t, ta) {
if (HasTileWaterClass(t) && IsTileOnWater(t)) {
if (HasTileWaterClass(t) && IsTileOnWater(t) && !IsCoastTile(t)) {
if (!allow_water) return_cmd_error(STR_ERROR_CAN_T_BUILD_ON_WATER);
if (!IsWaterTile(t)) {
/* Normal water tiles don't have to be cleared. For all other tile types clear

View File

@ -170,6 +170,16 @@ static inline bool IsCoast(TileIndex t)
return GetWaterTileType(t) == WATER_TILE_COAST;
}
/**
* Is it a coast tile
* @param t Tile to query.
* @return \c true if it is a coast.
*/
static inline bool IsCoastTile(TileIndex t)
{
return IsTileType(t, MP_WATER) && IsCoast(t);
}
/**
* Get the other tile of the ship depot.
* @param t Tile to query, containing one section of a ship depot.