Changeset - r9034:7ec68c39aca3
[Not reviewed]
master
0 3 0
smatz - 16 years ago 2008-04-23 19:47:23
smatz@openttd.org
(svn r12853) -Fix: catenary on tunnel entrances and middle bridge pieces was drawn twice in some cases
3 files changed with 8 insertions and 12 deletions:
0 comments (0 inline, 0 general)
src/elrail.cpp
Show inline comments
 
@@ -374,14 +374,19 @@ static void DrawCatenaryRailway(const Ti
 
				sss->x_size, sss->y_size, sss->z_size, GetSlopeZ(ti->x + sss->x_offset, ti->y + sss->y_offset) + sss->z_offset,
 
				IsTransparencySet(TO_CATENARY));
 
		}
 
	}
 
}
 

	
 
static void DrawCatenaryOnBridge(const TileInfo *ti)
 
void DrawCatenaryOnBridge(const TileInfo *ti)
 
{
 
	if (_patches.disable_elrails) return;
 

	
 
	/* Do not draw catenary if it is invisible */
 
	if (IsInvisibilitySet(TO_CATENARY)) return;
 

	
 
	TileIndex end = GetSouthernBridgeEnd(ti->tile);
 
	TileIndex start = GetOtherBridgeEnd(end);
 

	
 
	uint length = GetTunnelBridgeLength(start, end);
 
	uint num = GetTunnelBridgeLength(ti->tile, start) + 1;
 
	uint height;
 
@@ -434,20 +439,12 @@ void DrawCatenary(const TileInfo *ti)
 
{
 
	if (_patches.disable_elrails) return;
 

	
 
	/* Do not draw catenary if it is invisible */
 
	if (IsInvisibilitySet(TO_CATENARY)) return;
 

	
 
	if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile)) {
 
		TileIndex head = GetNorthernBridgeEnd(ti->tile);
 

	
 
		if (GetTunnelBridgeTransportType(head) == TRANSPORT_RAIL && HasCatenary(GetRailType(head))) {
 
			DrawCatenaryOnBridge(ti);
 
		}
 
	}
 

	
 
	switch (GetTileType(ti->tile)) {
 
		case MP_RAILWAY:
 
			if (IsRailDepot(ti->tile)) {
 
				const SortableSpriteStruct *sss = &CatenarySpriteData_Depot[GetRailDepotDirection(ti->tile)];
 

	
 
				/* This wire is not visible with the default depot sprites */
src/rail.h
Show inline comments
 
@@ -213,12 +213,13 @@ static inline bool HasCatenary(RailType 
 
 * Draws overhead wires and pylons for electric railways.
 
 * @param ti The TileInfo struct of the tile being drawn
 
 * @see DrawCatenaryRailway
 
 */
 
void DrawCatenary(const TileInfo *ti);
 
void DrawCatenaryOnTunnel(const TileInfo *ti);
 
void DrawCatenaryOnBridge(const TileInfo *ti);
 

	
 
Foundation GetRailFoundation(Slope tileh, TrackBits bits);
 

	
 
int32 SettingsDisableElrail(int32 p1); ///< _patches.disable_elrail callback
 

	
 
/**
src/tunnelbridge_cmd.cpp
Show inline comments
 
@@ -883,14 +883,12 @@ static void DrawTile_TunnelBridge(TileIn
 
					catenary = true;
 
					StartSpriteCombine();
 
					AddSortableSpriteToDraw(SPR_TRAMWAY_TUNNEL_WIRES + tunnelbridge_direction, PAL_NONE, ti->x, ti->y, BB_data[10], BB_data[11], TILE_HEIGHT, ti->z, IsTransparencySet(TO_CATENARY), BB_data[8], BB_data[9], BB_Z_SEPARATOR);
 
				}
 
			}
 
		} else if (!IsInvisibilitySet(TO_CATENARY) && HasCatenary(GetRailType(ti->tile))) {
 
			DrawCatenary(ti);
 

	
 
			catenary = true;
 
			StartSpriteCombine();
 
			DrawCatenaryOnTunnel(ti);
 
		}
 

	
 
		AddSortableSpriteToDraw(image + 1, PAL_NONE, ti->x + TILE_SIZE - 1, ti->y + TILE_SIZE - 1, BB_data[0], BB_data[1], TILE_HEIGHT, ti->z, false, BB_data[2], BB_data[3], BB_Z_SEPARATOR);
 
@@ -1086,13 +1084,13 @@ void DrawBridgeMiddle(const TileInfo* ti
 
			DrawBridgeTramBits(x, y, bridge_z, axis ^ 1, HasBit(rts, ROADTYPE_ROAD), false);
 
		} else {
 
			EndSpriteCombine();
 
			StartSpriteCombine();
 
		}
 
	} else if (HasCatenary(GetRailType(rampsouth))) {
 
		DrawCatenary(ti);
 
		DrawCatenaryOnBridge(ti);
 
	}
 

	
 
	/* draw roof, the component of the bridge which is logically between the vehicle and the camera */
 
	if (!IsInvisibilitySet(TO_BRIDGES)) {
 
		if (axis == AXIS_X) {
 
			y += 12;
0 comments (0 inline, 0 general)