mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-07-21 11:25:42 +01:00
(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.
This commit is contained in:
parent
a175840697
commit
820b8ca230
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user