summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-03-09 14:41:39 +0000
committerrubidium <rubidium@openttd.org>2007-03-09 14:41:39 +0000
commit2e1bda2c1ada658177efe1b2a3c20197925a7721 (patch)
tree9583d8e8d6da6438f5dc346057ab303487ed2f2f
parentd609dff2bab3e7aca3f882d985e0796c18c04741 (diff)
downloadopenttd-2e1bda2c1ada658177efe1b2a3c20197925a7721.tar.xz
(svn r9077) -Fix [FS#612]: the wrong catenary wires were drawn for tunnel entrances.
-rw-r--r--src/elrail.cpp13
-rw-r--r--src/table/elrail_data.h8
-rw-r--r--src/table/sprites.h6
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,