diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index dc765a5a44..a4a82c8bfd 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -3373,9 +3373,27 @@ static void DrawTile_Track(TileInfo *ti, DrawTileProcParams params) if (HasBit(_display_opt, DO_FULL_DETAIL)) DrawTrackDetails(ti, rti, GetRailGroundType(ti->tile)); - if (HasRailCatenaryDrawn(GetRailType(ti->tile), GetTileSecondaryRailTypeIfValid(ti->tile))) DrawRailCatenary(ti); + const RailType secondary_railtype = GetTileSecondaryRailTypeIfValid(ti->tile); - if (HasSignals(ti->tile)) DrawSignals(ti->tile, rails, rti); + if (HasRailCatenaryDrawn(GetRailType(ti->tile), secondary_railtype)) DrawRailCatenary(ti); + + if (HasSignals(ti->tile)) { + if (rails == TRACK_BIT_VERT) { + const RailtypeInfo *rti2 = GetRailTypeInfo(secondary_railtype); + if (IsSignalPresent(ti->tile, 2)) DrawSingleSignal(ti->tile, rti, TRACK_LEFT, GetSingleSignalState(ti->tile, 2), SIGNAL_TO_NORTH, 0); + if (IsSignalPresent(ti->tile, 3)) DrawSingleSignal(ti->tile, rti, TRACK_LEFT, GetSingleSignalState(ti->tile, 3), SIGNAL_TO_SOUTH, 1); + if (IsSignalPresent(ti->tile, 0)) DrawSingleSignal(ti->tile, rti2, TRACK_RIGHT, GetSingleSignalState(ti->tile, 0), SIGNAL_TO_NORTH, 2); + if (IsSignalPresent(ti->tile, 1)) DrawSingleSignal(ti->tile, rti2, TRACK_RIGHT, GetSingleSignalState(ti->tile, 1), SIGNAL_TO_SOUTH, 3); + } else if (rails == TRACK_BIT_HORZ) { + const RailtypeInfo *rti2 = GetRailTypeInfo(secondary_railtype); + if (IsSignalPresent(ti->tile, 3)) DrawSingleSignal(ti->tile, rti, TRACK_UPPER, GetSingleSignalState(ti->tile, 3), SIGNAL_TO_WEST, 4); + if (IsSignalPresent(ti->tile, 2)) DrawSingleSignal(ti->tile, rti, TRACK_UPPER, GetSingleSignalState(ti->tile, 2), SIGNAL_TO_EAST, 5); + if (IsSignalPresent(ti->tile, 1)) DrawSingleSignal(ti->tile, rti2, TRACK_LOWER, GetSingleSignalState(ti->tile, 1), SIGNAL_TO_WEST, 6); + if (IsSignalPresent(ti->tile, 0)) DrawSingleSignal(ti->tile, rti2, TRACK_LOWER, GetSingleSignalState(ti->tile, 0), SIGNAL_TO_EAST, 7); + } else { + DrawSignals(ti->tile, rails, rti); + } + } } else { /* draw depot */ const DrawTileSprites *dts;