mirror of https://github.com/OpenTTD/OpenTTD
(svn r12410) -Codechange: abstract out the test for catenary on electric rails
parent
237524f960
commit
6184676ec7
|
@ -84,7 +84,7 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
|
||||||
{
|
{
|
||||||
switch (GetTileType(t)) {
|
switch (GetTileType(t)) {
|
||||||
case MP_RAILWAY:
|
case MP_RAILWAY:
|
||||||
if (GetRailType(t) != RAILTYPE_ELECTRIC) return TRACK_BIT_NONE;
|
if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||||
switch (GetRailTileType(t)) {
|
switch (GetRailTileType(t)) {
|
||||||
case RAIL_TILE_NORMAL: case RAIL_TILE_SIGNALS:
|
case RAIL_TILE_NORMAL: case RAIL_TILE_SIGNALS:
|
||||||
return GetTrackBits(t);
|
return GetTrackBits(t);
|
||||||
|
@ -96,7 +96,7 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MP_TUNNELBRIDGE:
|
case MP_TUNNELBRIDGE:
|
||||||
if (GetRailType(t) != RAILTYPE_ELECTRIC) return TRACK_BIT_NONE;
|
if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||||
if (override != NULL && (IsTunnel(t) || GetTunnelBridgeLength(t, GetOtherBridgeEnd(t)) > 0)) {
|
if (override != NULL && (IsTunnel(t) || GetTunnelBridgeLength(t, GetOtherBridgeEnd(t)) > 0)) {
|
||||||
*override = 1 << GetTunnelBridgeDirection(t);
|
*override = 1 << GetTunnelBridgeDirection(t);
|
||||||
}
|
}
|
||||||
|
@ -104,12 +104,12 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
|
||||||
|
|
||||||
case MP_ROAD:
|
case MP_ROAD:
|
||||||
if (!IsLevelCrossing(t)) return TRACK_BIT_NONE;
|
if (!IsLevelCrossing(t)) return TRACK_BIT_NONE;
|
||||||
if (GetRailType(t) != RAILTYPE_ELECTRIC) return TRACK_BIT_NONE;
|
if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||||
return GetCrossingRailBits(t);
|
return GetCrossingRailBits(t);
|
||||||
|
|
||||||
case MP_STATION:
|
case MP_STATION:
|
||||||
if (!IsRailwayStation(t)) return TRACK_BIT_NONE;
|
if (!IsRailwayStation(t)) return TRACK_BIT_NONE;
|
||||||
if (GetRailType(t) != RAILTYPE_ELECTRIC) return TRACK_BIT_NONE;
|
if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||||
if (!IsStationTileElectrifiable(t)) return TRACK_BIT_NONE;
|
if (!IsStationTileElectrifiable(t)) return TRACK_BIT_NONE;
|
||||||
return TrackToTrackBits(GetRailStationTrack(t));
|
return TrackToTrackBits(GetRailStationTrack(t));
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@ void DrawCatenaryOnTunnel(const TileInfo *ti)
|
||||||
{ 1, 0, 15, 16 }, // NW
|
{ 1, 0, 15, 16 }, // NW
|
||||||
};
|
};
|
||||||
|
|
||||||
if ((GetRailType(ti->tile) != RAILTYPE_ELECTRIC) || _patches.disable_elrails) return;
|
if (!HasCatenary(GetRailType(ti->tile)) || _patches.disable_elrails) return;
|
||||||
|
|
||||||
DiagDirection dir = GetTunnelBridgeDirection(ti->tile);
|
DiagDirection dir = GetTunnelBridgeDirection(ti->tile);
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ static void DrawCatenaryRailway(const TileInfo *ti)
|
||||||
if (IsTileType(neighbour, MP_STATION)) tileh[TS_NEIGHBOUR] = SLOPE_FLAT;
|
if (IsTileType(neighbour, MP_STATION)) tileh[TS_NEIGHBOUR] = SLOPE_FLAT;
|
||||||
|
|
||||||
/* Read the foundataions if they are present, and adjust the tileh */
|
/* Read the foundataions if they are present, and adjust the tileh */
|
||||||
if (trackconfig[TS_NEIGHBOUR] != TRACK_BIT_NONE && IsTileType(neighbour, MP_RAILWAY) && GetRailType(neighbour) == RAILTYPE_ELECTRIC) foundation = GetRailFoundation(tileh[TS_NEIGHBOUR], trackconfig[TS_NEIGHBOUR]);
|
if (trackconfig[TS_NEIGHBOUR] != TRACK_BIT_NONE && IsTileType(neighbour, MP_RAILWAY) && HasCatenary(GetRailType(neighbour))) foundation = GetRailFoundation(tileh[TS_NEIGHBOUR], trackconfig[TS_NEIGHBOUR]);
|
||||||
if (IsBridgeTile(neighbour)) {
|
if (IsBridgeTile(neighbour)) {
|
||||||
foundation = GetBridgeFoundation(tileh[TS_NEIGHBOUR], DiagDirToAxis(GetTunnelBridgeDirection(neighbour)));
|
foundation = GetBridgeFoundation(tileh[TS_NEIGHBOUR], DiagDirToAxis(GetTunnelBridgeDirection(neighbour)));
|
||||||
}
|
}
|
||||||
|
@ -436,7 +436,7 @@ void DrawCatenary(const TileInfo *ti)
|
||||||
if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile)) {
|
if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile)) {
|
||||||
TileIndex head = GetNorthernBridgeEnd(ti->tile);
|
TileIndex head = GetNorthernBridgeEnd(ti->tile);
|
||||||
|
|
||||||
if (GetTunnelBridgeTransportType(head) == TRANSPORT_RAIL && GetRailType(head) == RAILTYPE_ELECTRIC) {
|
if (GetTunnelBridgeTransportType(head) == TRANSPORT_RAIL && HasCatenary(GetRailType(head))) {
|
||||||
DrawCatenaryOnBridge(ti);
|
DrawCatenaryOnBridge(ti);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
11
src/rail.h
11
src/rail.h
|
@ -183,6 +183,17 @@ void DrawDefaultWaypointSprite(int x, int y, RailType railtype);
|
||||||
void *EnsureNoTrainOnTrackProc(Vehicle *v, void *data);
|
void *EnsureNoTrainOnTrackProc(Vehicle *v, void *data);
|
||||||
int TicksToLeaveDepot(const Vehicle *v);
|
int TicksToLeaveDepot(const Vehicle *v);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if a rail type has catenary
|
||||||
|
* @param rt Rail type to test
|
||||||
|
*/
|
||||||
|
static inline bool HasCatenary(RailType rt)
|
||||||
|
{
|
||||||
|
return rt == RAILTYPE_ELECTRIC;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws overhead wires and pylons for electric railways.
|
* Draws overhead wires and pylons for electric railways.
|
||||||
* @param ti The TileInfo struct of the tile being drawn
|
* @param ti The TileInfo struct of the tile being drawn
|
||||||
|
|
|
@ -1761,7 +1761,7 @@ static void DrawTile_Track(TileInfo *ti)
|
||||||
|
|
||||||
if (HasBit(_display_opt, DO_FULL_DETAIL)) DrawTrackDetails(ti);
|
if (HasBit(_display_opt, DO_FULL_DETAIL)) DrawTrackDetails(ti);
|
||||||
|
|
||||||
if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
|
if (HasCatenary(GetRailType(ti->tile))) DrawCatenary(ti);
|
||||||
|
|
||||||
if (HasSignals(ti->tile)) DrawSignals(ti->tile, rails);
|
if (HasSignals(ti->tile)) DrawSignals(ti->tile, rails);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1835,7 +1835,7 @@ default_waypoint:
|
||||||
|
|
||||||
DrawGroundSprite(image, PAL_NONE);
|
DrawGroundSprite(image, PAL_NONE);
|
||||||
|
|
||||||
if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
|
if (HasCatenary(GetRailType(ti->tile))) DrawCatenary(ti);
|
||||||
|
|
||||||
foreach_draw_tile_seq(dtss, dts->seq) {
|
foreach_draw_tile_seq(dtss, dts->seq) {
|
||||||
SpriteID image = dtss->image.sprite;
|
SpriteID image = dtss->image.sprite;
|
||||||
|
|
|
@ -1111,7 +1111,7 @@ static void DrawTile_Road(TileInfo *ti)
|
||||||
DrawGroundSprite(SPR_TRAMWAY_OVERLAY + (GetCrossingRoadAxis(ti->tile) ^ 1), pal);
|
DrawGroundSprite(SPR_TRAMWAY_OVERLAY + (GetCrossingRoadAxis(ti->tile) ^ 1), pal);
|
||||||
DrawTramCatenary(ti, GetCrossingRoadBits(ti->tile));
|
DrawTramCatenary(ti, GetCrossingRoadBits(ti->tile));
|
||||||
}
|
}
|
||||||
if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
|
if (HasCatenary(GetRailType(ti->tile))) DrawCatenary(ti);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2177,7 +2177,7 @@ static void DrawTile_Station(TileInfo *ti)
|
||||||
DrawGroundSprite(image, HasBit(image, PALETTE_MODIFIER_COLOR) ? palette : PAL_NONE);
|
DrawGroundSprite(image, HasBit(image, PALETTE_MODIFIER_COLOR) ? palette : PAL_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC && IsStationTileElectrifiable(ti->tile)) DrawCatenary(ti);
|
if (HasCatenary(GetRailType(ti->tile)) && IsStationTileElectrifiable(ti->tile)) DrawCatenary(ti);
|
||||||
|
|
||||||
if (HasBit(roadtypes, ROADTYPE_TRAM)) {
|
if (HasBit(roadtypes, ROADTYPE_TRAM)) {
|
||||||
Axis axis = GetRoadStopDir(ti->tile) == DIAGDIR_NE ? AXIS_X : AXIS_Y;
|
Axis axis = GetRoadStopDir(ti->tile) == DIAGDIR_NE ? AXIS_X : AXIS_Y;
|
||||||
|
|
|
@ -859,7 +859,7 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
|
||||||
StartSpriteCombine();
|
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);
|
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 (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) {
|
} else if (HasCatenary(GetRailType(ti->tile))) {
|
||||||
DrawCatenary(ti);
|
DrawCatenary(ti);
|
||||||
|
|
||||||
catenary = true;
|
catenary = true;
|
||||||
|
@ -935,7 +935,7 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
|
||||||
DrawBridgeTramBits(ti->x, ti->y, z, offset, HasBit(rts, ROADTYPE_ROAD));
|
DrawBridgeTramBits(ti->x, ti->y, z, offset, HasBit(rts, ROADTYPE_ROAD));
|
||||||
}
|
}
|
||||||
EndSpriteCombine();
|
EndSpriteCombine();
|
||||||
} else if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) {
|
} else if (HasCatenary(GetRailType(ti->tile))) {
|
||||||
DrawCatenary(ti);
|
DrawCatenary(ti);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1061,7 +1061,7 @@ void DrawBridgeMiddle(const TileInfo* ti)
|
||||||
EndSpriteCombine();
|
EndSpriteCombine();
|
||||||
StartSpriteCombine();
|
StartSpriteCombine();
|
||||||
}
|
}
|
||||||
} else if (GetRailType(rampsouth) == RAILTYPE_ELECTRIC) {
|
} else if (HasCatenary(GetRailType(rampsouth))) {
|
||||||
DrawCatenary(ti);
|
DrawCatenary(ti);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue