summaryrefslogtreecommitdiff
path: root/src/industry_cmd.cpp
diff options
context:
space:
mode:
authorYexo <yexo@openttd.org>2009-01-21 02:31:55 +0000
committerYexo <yexo@openttd.org>2009-01-21 02:31:55 +0000
commitdb3ee34b4468aa3448b64e339258760885c5d716 (patch)
tree272533ac91b7bc3ab16c3ee1a997e142f3170a2a /src/industry_cmd.cpp
parent5e7669b539002cb9ec9e608f4601a827b5e9da57 (diff)
downloadopenttd-db3ee34b4468aa3448b64e339258760885c5d716.tar.xz
(svn r15190) -Feature: Allow terraforming of the tiles at the edges of the map.
Diffstat (limited to 'src/industry_cmd.cpp')
-rw-r--r--src/industry_cmd.cpp23
1 files changed, 7 insertions, 16 deletions
diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp
index 67afd3f3f..45def31e5 100644
--- a/src/industry_cmd.cpp
+++ b/src/industry_cmd.cpp
@@ -930,6 +930,8 @@ static void PlantFarmField(TileIndex tile, IndustryID industry)
/* offset tile to match size */
tile -= TileDiffXY(size_x / 2, size_y / 2);
+ if (TileX(tile) + size_x >= MapSizeX() || TileY(tile) + size_y >= MapSizeY()) return;
+
/* check the amount of bad tiles */
count = 0;
BEGIN_TILE_LOOP(cur_tile, size_x, size_y, tile)
@@ -1179,19 +1181,6 @@ static CheckNewIndustryProc * const _check_new_industry_procs[CHECK_END] = {
CheckNewIndustry_OilRig
};
-static bool CheckSuitableIndustryPos(TileIndex tile)
-{
- uint x = TileX(tile);
- uint y = TileY(tile);
-
- if (x < 2 || y < 2 || x > MapMaxX() - 3 || y > MapMaxY() - 3) {
- _error_message = STR_0239_SITE_UNSUITABLE;
- return false;
- }
-
- return true;
-}
-
static const Town *CheckMultipleIndustryInTown(TileIndex tile, int type)
{
const Town *t;
@@ -1237,6 +1226,8 @@ static bool CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTileTable
do {
IndustryGfx gfx = GetTranslatedIndustryTileID(it->gfx);
+ if (TileX(tile) + it->ti.x >= MapSizeX()) return false;
+ if (TileY(tile) + it->ti.y >= MapSizeY()) return false;
TileIndex cur_tile = tile + ToTileIndexDiff(it->ti);
if (!IsValidTile(cur_tile)) {
@@ -1342,7 +1333,7 @@ static bool CheckCanTerraformSurroundingTiles(TileIndex tile, uint height, int i
* has to be correct too (in level, or almost in level)
* else you get a chain-reaction of terraforming. */
if (internal == 0 && curh != height) {
- if (!CheckCanTerraformSurroundingTiles(tile_walk + TileDiffXY(-1, -1), height, internal + 1))
+ if (TileX(tile_walk) == 0 || TileY(tile_walk) == 0 || !CheckCanTerraformSurroundingTiles(tile_walk + TileDiffXY(-1, -1), height, internal + 1))
return false;
}
} END_TILE_LOOP(tile_walk, size_x, size_y, tile);
@@ -1373,6 +1364,7 @@ static bool CheckIfCanLevelIndustryPlatform(TileIndex tile, uint32 flags, const
/* Remember level height */
h = TileHeight(tile);
+ if (TileX(tile) <= 1 || TileY(tile) <= 1) return false;
/* Check that all tiles in area and surrounding are clear
* this determines that there are no obstructing items */
cur_tile = tile + TileDiffXY(-1, -1);
@@ -1380,7 +1372,7 @@ static bool CheckIfCanLevelIndustryPlatform(TileIndex tile, uint32 flags, const
size_y = max_y + 4;
/* Check if we don't leave the map */
- if (TileX(cur_tile) == 0 || TileY(cur_tile) == 0 || TileX(cur_tile) + size_x >= MapMaxX() || TileY(cur_tile) + size_y >= MapMaxY()) return false;
+ if (TileX(cur_tile) + size_x >= MapMaxX() || TileY(cur_tile) + size_y >= MapMaxY()) return false;
/* _current_company is OWNER_NONE for randomly generated industries and in editor, or the company who funded or prospected the industry.
* Perform terraforming as OWNER_TOWN to disable autoslope. */
@@ -1632,7 +1624,6 @@ static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint
if (t == NULL) return NULL;
if (!CheckIfIndustryIsAllowed(tile, type, t)) return NULL;
- if (!CheckSuitableIndustryPos(tile)) return NULL;
if (!Industry::CanAllocateItem()) return NULL;