1
0
Fork 0

(svn r3996) -Fix: Slope and height information returned for some tile types is wrong

This leads to graphical glitches when drawing foundations.
This doesn't fix all problems, but at least some of them.
release/0.5
tron 2006-03-21 20:02:05 +00:00
parent a175840697
commit 820b8ca230
5 changed files with 12 additions and 10 deletions

View File

@ -16,12 +16,12 @@ static void DrawTile_Dummy(TileInfo *ti)
static uint GetSlopeZ_Dummy(const TileInfo* ti)
{
return GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh) + ti->z;
return 0;
}
static uint GetSlopeTileh_Dummy(const TileInfo* ti)
{
return ti->tileh;
return 0;
}
static int32 ClearTile_Dummy(TileIndex tile, byte flags)

View File

@ -399,7 +399,7 @@ static void DrawTile_Industry(TileInfo *ti)
static uint GetSlopeZ_Industry(const TileInfo* ti)
{
return GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh) + ti->z;
return ti->z + (ti->tileh == 0 ? 0 : 8);
}
static uint GetSlopeTileh_Industry(const TileInfo* ti)

View File

@ -2032,7 +2032,7 @@ void StationPickerDrawSprite(int x, int y, RailType railtype, int image)
static uint GetSlopeZ_Station(const TileInfo* ti)
{
return (ti->tileh != 0) ? ti->z + 8 : ti->z;
return ti->z + (ti->tileh == 0 ? 0 : 8);
}
static uint GetSlopeTileh_Station(const TileInfo *ti)

View File

@ -144,14 +144,12 @@ static void DrawTile_Town(TileInfo *ti)
static uint GetSlopeZ_Town(const TileInfo* ti)
{
uint z = GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh) + ti->z;
if (ti->tileh != 0) z = (z & ~7) + 4;
return (uint16) z;
return ti->z + (ti->tileh == 0 ? 0 : 8);
}
static uint GetSlopeTileh_Town(const TileInfo *ti)
{
return ti->tileh;
return 0;
}
static void AnimateTile_Town(TileIndex tile)

View File

@ -184,12 +184,16 @@ static void DrawTile_Unmovable(TileInfo *ti)
static uint GetSlopeZ_Unmovable(const TileInfo* ti)
{
return GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh) + ti->z;
if (_m[ti->tile].m5 == 3) {
return ti->z + GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh);
} else {
return ti->z + (ti->tileh == 0 ? 0 : 8);
}
}
static uint GetSlopeTileh_Unmovable(const TileInfo *ti)
{
return 0;
return _m[ti->tile].m5 == 3 ? ti->tileh : 0;
}
static int32 ClearTile_Unmovable(TileIndex tile, byte flags)