Fix signals on dual railtype tiles using wrong per-railtype custom sprites

This commit is contained in:
Jonathan G Rennison
2021-08-25 03:36:06 +01:00
parent 13603cb8e1
commit 93c23b4096

View File

@@ -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 (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 { } else {
/* draw depot */ /* draw depot */
const DrawTileSprites *dts; const DrawTileSprites *dts;