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

Function GetRailTileArea

src/newgrf_station.cpp:83–105  ·  view source on GitHub ↗

* Get the tile area of a rail station with trigger area type. * @param st The rail station or rail waypoint. * @param tile Origin tile. * @param ta Trigger area type. * @return The tile area. */

Source from the content-addressed store, hash-verified

81 * @return The tile area.
82 */
83TileArea GetRailTileArea(const BaseStation *st, TileIndex tile, TriggerArea ta)
84{
85 switch (ta) {
86 default: NOT_REACHED();
87
88 case TA_TILE:
89 return {tile, 1, 1};
90
91 case TA_PLATFORM: {
92 TileIndex start, end;
93 Axis axis = GetRailStationAxis(tile);
94 TileIndexDiff delta = TileOffsByAxis(axis);
95
96 for (end = tile; IsRailStationTile(end + delta) && IsCompatibleTrainStationTile(end + delta, tile); end += delta) { /* Nothing */ }
97 for (start = tile; IsRailStationTile(start - delta) && IsCompatibleTrainStationTile(start - delta, tile); start -= delta) { /* Nothing */ }
98
99 return TileArea(start, TileX(end) - TileX(start) + 1, TileY(end) - TileY(start) + 1);
100 }
101
102 case TA_WHOLE:
103 return st->GetTileArea(Station::IsExpected(st) ? StationType::Rail : StationType::RailWaypoint);
104 }
105}
106
107
108/**

Callers 3

TriggerStationAnimationFunction · 0.85

Calls 8

NOT_REACHEDFunction · 0.85
GetRailStationAxisFunction · 0.85
TileOffsByAxisFunction · 0.85
IsRailStationTileFunction · 0.85
TileXFunction · 0.85
TileYFunction · 0.85
GetTileAreaMethod · 0.45

Tested by

no test coverage detected