summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortron <tron@openttd.org>2006-03-21 20:02:05 +0000
committertron <tron@openttd.org>2006-03-21 20:02:05 +0000
commit4d3364d8118dbadaacc0cc607a24ff525d24a173 (patch)
tree3dd764e9709bc9811e7667a7182d82eb843bfa22
parent4b86230d94d812c787f952e0892ad4670e67bf35 (diff)
downloadopenttd-4d3364d8118dbadaacc0cc607a24ff525d24a173.tar.xz
(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.
-rw-r--r--dummy_land.c4
-rw-r--r--industry_cmd.c2
-rw-r--r--station_cmd.c2
-rw-r--r--town_cmd.c6
-rw-r--r--unmovable_cmd.c8
5 files changed, 12 insertions, 10 deletions
diff --git a/dummy_land.c b/dummy_land.c
index 97b9a05d4..9cc7ec590 100644
--- a/dummy_land.c
+++ b/dummy_land.c
@@ -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)
diff --git a/industry_cmd.c b/industry_cmd.c
index 4026f7c4d..27ecedd41 100644
--- a/industry_cmd.c
+++ b/industry_cmd.c
@@ -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)
diff --git a/station_cmd.c b/station_cmd.c
index 567a418ff..0e5aec5ef 100644
--- a/station_cmd.c
+++ b/station_cmd.c
@@ -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)
diff --git a/town_cmd.c b/town_cmd.c
index 86bf54124..c9eede7c8 100644
--- a/town_cmd.c
+++ b/town_cmd.c
@@ -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)
diff --git a/unmovable_cmd.c b/unmovable_cmd.c
index 3798265ec..23e11ab50 100644
--- a/unmovable_cmd.c
+++ b/unmovable_cmd.c
@@ -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)