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

Function DrawSignals

src/rail_cmd.cpp:2388–2420  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2386}
2387
2388static void DrawSignals(TileIndex tile, TrackBits rails, const RailTypeInfo *rti)
2389{
2390 auto MAYBE_DRAW_SIGNAL = [&](uint8_t signalbit, SignalOffsets image, uint pos, Track track) {
2391 if (IsSignalPresent(tile, signalbit)) DrawSingleSignal(tile, rti, track, GetSingleSignalState(tile, signalbit), image, pos);
2392 };
2393
2394 if (!(rails & TRACK_BIT_Y)) {
2395 if (!(rails & TRACK_BIT_X)) {
2396 if (rails & TRACK_BIT_LEFT) {
2397 MAYBE_DRAW_SIGNAL(2, SIGNAL_TO_NORTH, 0, TRACK_LEFT);
2398 MAYBE_DRAW_SIGNAL(3, SIGNAL_TO_SOUTH, 1, TRACK_LEFT);
2399 }
2400 if (rails & TRACK_BIT_RIGHT) {
2401 MAYBE_DRAW_SIGNAL(0, SIGNAL_TO_NORTH, 2, TRACK_RIGHT);
2402 MAYBE_DRAW_SIGNAL(1, SIGNAL_TO_SOUTH, 3, TRACK_RIGHT);
2403 }
2404 if (rails & TRACK_BIT_UPPER) {
2405 MAYBE_DRAW_SIGNAL(3, SIGNAL_TO_WEST, 4, TRACK_UPPER);
2406 MAYBE_DRAW_SIGNAL(2, SIGNAL_TO_EAST, 5, TRACK_UPPER);
2407 }
2408 if (rails & TRACK_BIT_LOWER) {
2409 MAYBE_DRAW_SIGNAL(1, SIGNAL_TO_WEST, 6, TRACK_LOWER);
2410 MAYBE_DRAW_SIGNAL(0, SIGNAL_TO_EAST, 7, TRACK_LOWER);
2411 }
2412 } else {
2413 MAYBE_DRAW_SIGNAL(3, SIGNAL_TO_SOUTHWEST, 8, TRACK_X);
2414 MAYBE_DRAW_SIGNAL(2, SIGNAL_TO_NORTHEAST, 9, TRACK_X);
2415 }
2416 } else {
2417 MAYBE_DRAW_SIGNAL(3, SIGNAL_TO_SOUTHEAST, 10, TRACK_Y);
2418 MAYBE_DRAW_SIGNAL(2, SIGNAL_TO_NORTHWEST, 11, TRACK_Y);
2419 }
2420}
2421
2422static void DrawTile_Track(TileInfo *ti)
2423{

Callers 1

DrawTile_TrackFunction · 0.85

Calls 3

IsSignalPresentFunction · 0.85
DrawSingleSignalFunction · 0.85
GetSingleSignalStateFunction · 0.85

Tested by

no test coverage detected