Mercurial > hg > openttd
changeset 3445:9b4665a3a8d8 draft
(svn r4276) -Codechange: Cleaned DrawCatenaryOnBridge a bit (requested by Tron)
author | celestar <celestar@openttd.org> |
---|---|
date | Tue, 04 Apr 2006 12:31:29 +0000 |
parents | 9c64b4ed986c |
children | 629ce62ce1b7 |
files | elrail.c |
diffstat | 1 files changed, 15 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/elrail.c +++ b/elrail.c @@ -309,9 +309,12 @@ static void DrawCatenaryOnBridge(const TileInfo *ti) { - TileIndex start = GetOtherBridgeEnd(GetSouthernBridgeEnd(ti->tile)); - uint length = GetBridgeLength(GetSouthernBridgeEnd(ti->tile), GetOtherBridgeEnd(GetSouthernBridgeEnd(ti->tile))); + TileIndex end = GetSouthernBridgeEnd(ti->tile); + TileIndex start = GetOtherBridgeEnd(end); + + uint length = GetBridgeLength(start, end); uint num = DistanceMax(ti->tile, start); + const SortableSpriteStruct *sss; Axis axis = GetBridgeAxis(ti->tile); TLG tlg = GetTLG(ti->tile); @@ -319,11 +322,19 @@ CatenarySprite offset = axis == AXIS_X ? 0 : WIRE_Y_FLAT_BOTH - WIRE_X_FLAT_BOTH; if ((length % 2) && num == length) { + /* Draw the "short" wire on the southern end of the bridge + * only needed if the length of the bridge is odd */ sss = &CatenarySpriteData[WIRE_X_FLAT_BOTH + offset]; } else { + /* Draw "long" wires on all other tiles of the bridge (one pylon every two tiles) */ sss = &CatenarySpriteData[WIRE_X_FLAT_SW + (num % 2) + offset]; } + AddSortableSpriteToDraw( sss->image, ti->x + sss->x_offset, ti->y + sss->y_offset, + sss->x_size, sss->y_size, sss->z_size, GetBridgeHeight(ti->tile) + sss->z_offset + 8); + + /* Finished with wires, draw pylons */ + /* every other tile needs a pylon on the northern end */ if (num % 2) { if (axis == AXIS_X) { AddSortableSpriteToDraw( pylons_bridge[0 + HASBIT(tlg, 0)], ti->x, ti->y + 4 + 8 * HASBIT(tlg, 0), 1, 1, 10, GetBridgeHeight(ti->tile) + 8); @@ -332,16 +343,14 @@ } } - if (DistanceMax(ti->tile, start) == length) { /* need a pylon here (the southern end) */ + /* need a pylon on the southern end of the bridge */ + if (DistanceMax(ti->tile, start) == length) { if (axis == AXIS_X) { AddSortableSpriteToDraw( pylons_bridge[0 + HASBIT(tlg, 0)], ti->x + 16, ti->y + 4 + 8 * HASBIT(tlg, 0), 1, 1, 10, GetBridgeHeight(ti->tile) + 8); } else { AddSortableSpriteToDraw( pylons_bridge[2 + HASBIT(tlg, 1)], ti->x + 4 + 8 * HASBIT(tlg, 1), ti->y + 16, 1, 1, 10, GetBridgeHeight(ti->tile) + 8); } } - - AddSortableSpriteToDraw( sss->image, ti->x + sss->x_offset, ti->y + sss->y_offset, - sss->x_size, sss->y_size, sss->z_size, GetBridgeHeight(ti->tile) + sss->z_offset + 8); } void DrawCatenary(const TileInfo *ti)