diff options
author | peter1138 <peter1138@openttd.org> | 2007-01-19 21:40:10 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2007-01-19 21:40:10 +0000 |
commit | 23bf684a5d7bb05211a21bbab6e0d23aacc8587a (patch) | |
tree | c640d17aaa58d0ed8da9226bec3ccb51b2df153d /src/rail_cmd.cpp | |
parent | a5b864c93275ae3ab32b08d28f9b38b23face6e7 (diff) | |
download | openttd-23bf684a5d7bb05211a21bbab6e0d23aacc8587a.tar.xz |
(svn r8283) -Fix (r8128): Custom waypoint drawing used wrong bits since bitshuffling occurred. Also update with other station drawing changes (code duplication,
eh?)
Diffstat (limited to 'src/rail_cmd.cpp')
-rw-r--r-- | src/rail_cmd.cpp | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index a5643a48f..04deae559 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -1324,8 +1324,7 @@ static void DrawTile_Track(TileInfo *ti) relocation = GetCustomStationRelocation(statspec, st, ti->tile); image = dts->ground_sprite; - if (HASBIT(image, 31)) { - CLRBIT(image, 31); + if (HASBIT(image, SPRITE_MODIFIER_USE_OFFSET)) { image += GetCustomStationGroundRelocation(statspec, st, ti->tile); image += rti->custom_ground_offset; } else { @@ -1349,9 +1348,18 @@ default_waypoint: if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti); foreach_draw_tile_seq(dtss, dts->seq) { - SpriteID image = dtss->image + relocation; + SpriteID image = dtss->image; SpriteID pal; + /* Unlike stations, our default waypoint has no variation for + * different railtype, so don't use the railtype offset if + * no relocation is set */ + if (HASBIT(image, SPRITE_MODIFIER_USE_OFFSET)) { + image += rti->total_offset; + } else { + image += relocation; + } + if (_display_opt & DO_TRANS_BUILDINGS) { SETBIT(image, PALETTE_MODIFIER_TRANSPARENT); pal = PALETTE_TO_TRANSPARENT; @@ -1361,12 +1369,16 @@ default_waypoint: pal = dtss->pal; } - AddSortableSpriteToDraw( - image, pal, - ti->x + dtss->delta_x, ti->y + dtss->delta_y, - dtss->size_x, dtss->size_y, - dtss->size_z, ti->z + dtss->delta_z - ); + if ((byte)dtss->delta_z != 0x80) { + AddSortableSpriteToDraw( + image, pal, + ti->x + dtss->delta_x, ti->y + dtss->delta_y, + dtss->size_x, dtss->size_y, + dtss->size_z, ti->z + dtss->delta_z + ); + } else { + AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y); + } } } DrawBridgeMiddle(ti); |