|
@@ -1163,56 +1163,56 @@ static bool CheckSuitableIndustryPos(Til
|
|
|
static const Town *CheckMultipleIndustryInTown(TileIndex tile, int type)
|
|
|
{
|
|
|
const Town *t;
|
|
|
const Industry *i;
|
|
|
|
|
|
t = ClosestTownFromTile(tile, (uint)-1);
|
|
|
|
|
|
if (_patches.multiple_industry_per_town) return t;
|
|
|
|
|
|
FOR_ALL_INDUSTRIES(i) {
|
|
|
if (i->type == (byte)type &&
|
|
|
i->town == t) {
|
|
|
_error_message = STR_0287_ONLY_ONE_ALLOWED_PER_TOWN;
|
|
|
return NULL;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return t;
|
|
|
}
|
|
|
|
|
|
bool IsSlopeRefused(Slope current, Slope refused)
|
|
|
{
|
|
|
if (IsSteepSlope(current)) return true;
|
|
|
if (current != SLOPE_FLAT) {
|
|
|
if (refused & SLOPE_STEEP) return true;
|
|
|
if (IsSteepSlope(refused)) return true;
|
|
|
|
|
|
Slope t = ComplementSlope(current);
|
|
|
|
|
|
if (refused & 1 && (t & SLOPE_NW)) return false;
|
|
|
if (refused & 2 && (t & SLOPE_NE)) return false;
|
|
|
if (refused & 4 && (t & SLOPE_SW)) return false;
|
|
|
if (refused & 8 && (t & SLOPE_SE)) return false;
|
|
|
if (refused & SLOPE_W && (t & SLOPE_NW)) return true;
|
|
|
if (refused & SLOPE_S && (t & SLOPE_NE)) return true;
|
|
|
if (refused & SLOPE_E && (t & SLOPE_SW)) return true;
|
|
|
if (refused & SLOPE_N && (t & SLOPE_SE)) return true;
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
static bool CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTileTable *it, uint itspec_index, int type, bool *custom_shape_check = NULL)
|
|
|
{
|
|
|
_error_message = STR_0239_SITE_UNSUITABLE;
|
|
|
bool refused_slope = false;
|
|
|
bool custom_shape = false;
|
|
|
|
|
|
do {
|
|
|
IndustryGfx gfx = GetTranslatedIndustryTileID(it->gfx);
|
|
|
TileIndex cur_tile = tile + ToTileIndexDiff(it->ti);
|
|
|
|
|
|
if (!IsValidTile(cur_tile)) {
|
|
|
if (gfx == GFX_WATERTILE_SPECIALCHECK) continue;
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (gfx == GFX_WATERTILE_SPECIALCHECK) {
|
|
|
if (!IsTileType(cur_tile, MP_WATER) ||
|
|
|
GetTileSlope(cur_tile, NULL) != SLOPE_FLAT) {
|
|
|
return false;
|