Fix aspect propagation issues with combined shunt/normal signals

This commit is contained in:
Jonathan G Rennison
2022-06-29 23:28:53 +01:00
parent 05c7c528f5
commit e399853f2c
2 changed files with 11 additions and 3 deletions

View File

@@ -711,7 +711,7 @@ static uint8 GetForwardAspect(const SigInfo &info, TileIndex tile, Trackdir trac
static uint8 GetForwardAspectAndIncrement(const SigInfo &info, TileIndex tile, Trackdir trackdir, bool combined_normal_mode = false)
{
return std::min<uint8>(GetForwardAspect(info, tile, trackdir) + (combined_normal_mode ? 2 : 1), GetMaximumSignalAspect());
return IncrementAspectForSignal(GetForwardAspect(info, tile, trackdir), combined_normal_mode);
}
static inline bool IsRailCombinedNormalShuntSignalStyle(TileIndex tile, Track track)
@@ -844,7 +844,8 @@ static void UpdateSignalsAroundSegment(SigInfo info)
if (newstate == SIGNAL_STATE_GREEN) {
aspect = 1;
if (info.out_signal_tile != INVALID_TILE) {
aspect = std::min<uint8>(GetSignalAspectGeneric(info.out_signal_tile, info.out_signal_trackdir, true) + 1, GetMaximumSignalAspect());
/* Combined normal/shunt signals should never be encountered here as they are PBS-only and so will never be green if not reserved */
aspect = IncrementAspectForSignal(GetSignalAspectGeneric(info.out_signal_tile, info.out_signal_trackdir, true), false);
}
} else {
aspect = 0;