| 2386 | } |
| 2387 | |
| 2388 | static 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 | |
| 2422 | static void DrawTile_Track(TileInfo *ti) |
| 2423 | { |
no test coverage detected