MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / GetRailTrackBitsUniversal

Function GetRailTrackBitsUniversal

src/elrail.cpp:86–120  ·  view source on GitHub ↗

* Finds which Electrified Rail Bits are present on a given tile. * @param t tile to check * @param override pointer to PCP override, can be nullptr * @return trackbits of tile if it is electrified */

Source from the content-addressed store, hash-verified

84 * @return trackbits of tile if it is electrified
85 */
86static TrackBits GetRailTrackBitsUniversal(TileIndex t, DiagDirections *override)
87{
88 switch (GetTileType(t)) {
89 case MP_RAILWAY:
90 if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE;
91 switch (GetRailTileType(t)) {
92 case RailTileType::Normal: case RailTileType::Signals:
93 return GetTrackBits(t);
94 default:
95 return TRACK_BIT_NONE;
96 }
97 break;
98
99 case MP_TUNNELBRIDGE:
100 if (GetTunnelBridgeTransportType(t) != TRANSPORT_RAIL) return TRACK_BIT_NONE;
101 if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE;
102 if (override != nullptr && (IsTunnel(t) || GetTunnelBridgeLength(t, GetOtherBridgeEnd(t)) > 0)) {
103 *override = GetTunnelBridgeDirection(t);
104 }
105 return DiagDirToDiagTrackBits(GetTunnelBridgeDirection(t));
106
107 case MP_ROAD:
108 if (!IsLevelCrossing(t)) return TRACK_BIT_NONE;
109 if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE;
110 return GetCrossingRailBits(t);
111
112 case MP_STATION:
113 if (!HasStationRail(t)) return TRACK_BIT_NONE;
114 if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE;
115 return TrackToTrackBits(GetRailStationTrack(t));
116
117 default:
118 return TRACK_BIT_NONE;
119 }
120}
121
122/**
123 * Masks out track bits when neighbouring tiles are unelectrified.

Callers 1

DrawRailCatenaryRailwayFunction · 0.85

Calls 15

GetTileTypeFunction · 0.85
HasRailCatenaryFunction · 0.85
GetRailTypeFunction · 0.85
GetRailTileTypeFunction · 0.85
GetTrackBitsFunction · 0.85
IsTunnelFunction · 0.85
GetTunnelBridgeLengthFunction · 0.85
GetOtherBridgeEndFunction · 0.85
GetTunnelBridgeDirectionFunction · 0.85
DiagDirToDiagTrackBitsFunction · 0.85
IsLevelCrossingFunction · 0.85

Tested by

no test coverage detected