diff options
author | Yexo <yexo@openttd.org> | 2009-01-21 02:31:55 +0000 |
---|---|---|
committer | Yexo <yexo@openttd.org> | 2009-01-21 02:31:55 +0000 |
commit | db3ee34b4468aa3448b64e339258760885c5d716 (patch) | |
tree | 272533ac91b7bc3ab16c3ee1a997e142f3170a2a /src/industry_cmd.cpp | |
parent | 5e7669b539002cb9ec9e608f4601a827b5e9da57 (diff) | |
download | openttd-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.cpp | 23 |
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; |