diff options
author | rubidium <rubidium@openttd.org> | 2008-05-31 22:43:42 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-05-31 22:43:42 +0000 |
commit | d19c347fd07f1a1c5d460eec7f29cdb465772b3c (patch) | |
tree | 00c2dc2d74290c939c8357069490dcfa87a3413a /src | |
parent | 02680763373506002ff1cdb6cea50e57c73b9287 (diff) | |
download | openttd-d19c347fd07f1a1c5d460eec7f29cdb465772b3c.tar.xz |
(svn r13348) -Fix: an industry does not always need foundations; in the case of NewGRFs an industry can be built on a steep slope, however when 'querying' the foundation type of an industry we neglected the fact that these steep slope tiles do not have a foundation. As a result of this when one built a structure requiring foundations on a tile SW or SE of a steep slope industry tile it would try to apply the foundation on the steep slope to determine whether to draw the wall of the foundation and trigger an assert.
Diffstat (limited to 'src')
-rw-r--r-- | src/industry_cmd.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 2ae199d40..0bf658cdc 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -334,6 +334,20 @@ static uint GetSlopeZ_Industry(TileIndex tile, uint x, uint y) static Foundation GetFoundation_Industry(TileIndex tile, Slope tileh) { + IndustryGfx gfx = GetIndustryGfx(tile); + + /* For NewGRF industry tiles we might not be drawing a foundation. We need to + * account for this, otherwise we might be applying a FOUNDATION_LEVELED + * on a steep slope which is not allowed. Furthermore other structures should + * draw the wall of the foundation in this case. + */ + if (gfx >= NEW_INDUSTRYTILEOFFSET) { + const IndustryTileSpec *indts = GetIndustryTileSpec(gfx); + if (indts->grf_prop.spritegroup != NULL && HasBit(indts->callback_flags, CBM_INDT_DRAW_FOUNDATIONS)) { + uint32 callback_res = GetIndustryTileCallback(CBID_INDUSTRY_DRAW_FOUNDATIONS, 0, 0, gfx, GetIndustryByTile(tile), tile); + if (callback_res == 0) return FOUNDATION_NONE; + } + } return FlatteningFoundation(tileh); } |