diff options
author | tron <tron@openttd.org> | 2006-03-21 20:02:05 +0000 |
---|---|---|
committer | tron <tron@openttd.org> | 2006-03-21 20:02:05 +0000 |
commit | 820b8ca230b5b0a32e75b8b3f636921f3293363f (patch) | |
tree | 3dd764e9709bc9811e7667a7182d82eb843bfa22 | |
parent | a1758406976f06bb07c5cb5f95ef2c205c6ad1c2 (diff) | |
download | openttd-820b8ca230b5b0a32e75b8b3f636921f3293363f.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.c | 4 | ||||
-rw-r--r-- | industry_cmd.c | 2 | ||||
-rw-r--r-- | station_cmd.c | 2 | ||||
-rw-r--r-- | town_cmd.c | 6 | ||||
-rw-r--r-- | unmovable_cmd.c | 8 |
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) |