diff options
author | rubidium <rubidium@openttd.org> | 2007-03-09 14:41:39 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2007-03-09 14:41:39 +0000 |
commit | 2b6736d24434e35ecc940e5d0cdd7344fd7903e2 (patch) | |
tree | 9583d8e8d6da6438f5dc346057ab303487ed2f2f | |
parent | e1eab15b842949e4a28f65fd21fd71b247e9df4b (diff) | |
download | openttd-2b6736d24434e35ecc940e5d0cdd7344fd7903e2.tar.xz |
(svn r9077) -Fix [FS#612]: the wrong catenary wires were drawn for tunnel entrances.
-rw-r--r-- | src/elrail.cpp | 13 | ||||
-rw-r--r-- | src/table/elrail_data.h | 8 | ||||
-rw-r--r-- | src/table/sprites.h | 6 |
3 files changed, 25 insertions, 2 deletions
diff --git a/src/elrail.cpp b/src/elrail.cpp index 10b44e0b3..c57cdead6 100644 --- a/src/elrail.cpp +++ b/src/elrail.cpp @@ -125,7 +125,7 @@ static void AdjustTileh(TileIndex tile, Slope *tileh) { if (IsTileType(tile, MP_TUNNELBRIDGE)) { if (IsTunnel(tile)) { - *tileh = SLOPE_FLAT; + *tileh = SLOPE_STEEP; /* XXX - Hack to make tunnel entrances to always have a pylon */ } else { if (*tileh != SLOPE_FLAT) { *tileh = SLOPE_FLAT; @@ -291,7 +291,16 @@ static void DrawCatenaryRailway(const TileInfo *ti) /* Drawing of pylons is finished, now draw the wires */ for (t = TRACK_BEGIN; t < TRACK_END; t++) { if (HASBIT(trackconfig[TS_HOME], t)) { + if (IsTunnelTile(ti->tile)) { + const SortableSpriteStruct* sss = &CatenarySpriteData_Tunnel[GetTunnelDirection(ti->tile)]; + AddSortableSpriteToDraw( + sss->image, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset, + sss->x_size, sss->y_size, sss->z_size, + GetTileZ(ti->tile) + sss->z_offset + ); + break; + } byte PCPconfig = HASBIT(PCPstatus, PCPpositions[t][0]) + (HASBIT(PCPstatus, PCPpositions[t][1]) << 1); @@ -371,7 +380,7 @@ void DrawCatenary(const TileInfo *ti) switch (GetTileType(ti->tile)) { case MP_RAILWAY: - if (IsRailDepot(ti->tile)) { + if ( IsRailDepot(ti->tile)) { const SortableSpriteStruct* sss = &CatenarySpriteData_Depot[GetRailDepotDirection(ti->tile)]; AddSortableSpriteToDraw( diff --git a/src/table/elrail_data.h b/src/table/elrail_data.h index 003da906d..3f43899e9 100644 --- a/src/table/elrail_data.h +++ b/src/table/elrail_data.h @@ -340,6 +340,14 @@ static const SortableSpriteStruct CatenarySpriteData_Depot[] = { { SPR_WIRE_DEPOT_NW, 8, 0, 1, 8, 1, ELRAIL_ELEVATION } //! Wire for NW depot exit }; +static const SortableSpriteStruct CatenarySpriteData_Tunnel[] = { + { SPR_WIRE_TUNNEL_NE, 0, 8, 8, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE tunnel exit + { SPR_WIRE_TUNNEL_SE, 8, 0, 1, 8, 1, ELRAIL_ELEVATION }, //! Wire for SE tunnel exit + { SPR_WIRE_TUNNEL_SW, 0, 8, 8, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW tunnel exit + { SPR_WIRE_TUNNEL_NW, 8, 0, 1, 8, 1, ELRAIL_ELEVATION } //! Wire for NW tunnel exit +}; + + /** Refers to a certain element of the catenary. * Identifiers for Wires: * <ol><li>Direction of the wire</li> diff --git a/src/table/sprites.h b/src/table/sprites.h index 1ea4f71cf..e9b9c9b69 100644 --- a/src/table/sprites.h +++ b/src/table/sprites.h @@ -291,6 +291,12 @@ enum Sprites { SPR_WIRE_Y_NW_DOWN = SPR_ELRAIL_BASE + 26, /* Tunnel entries */ + SPR_WIRE_TUNNEL_NE = SPR_ELRAIL_BASE + 27, + SPR_WIRE_TUNNEL_SE = SPR_ELRAIL_BASE + 28, + SPR_WIRE_TUNNEL_SW = SPR_ELRAIL_BASE + 29, + SPR_WIRE_TUNNEL_NW = SPR_ELRAIL_BASE + 30, + + /* Depot entries */ SPR_WIRE_DEPOT_SW = SPR_ELRAIL_BASE + 27, SPR_WIRE_DEPOT_NW = SPR_ELRAIL_BASE + 28, SPR_WIRE_DEPOT_NE = SPR_ELRAIL_BASE + 29, |