mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-12 01:24:54 +00:00
(svn r25037) -Fix [FS#5480]: green path signals would be shown when building them 'under' a train, and they would keep showing green until they were passed again
This commit is contained in:
parent
c58c86efda
commit
0c8b215935
@ -1139,9 +1139,9 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
|
|||||||
DirtyCompanyInfrastructureWindows(GetTileOwner(tile));
|
DirtyCompanyInfrastructureWindows(GetTileOwner(tile));
|
||||||
|
|
||||||
if (IsPbsSignal(sigtype)) {
|
if (IsPbsSignal(sigtype)) {
|
||||||
/* PBS signals should show red unless they are on a reservation. */
|
/* PBS signals should show red unless they are on reserved tiles without a train. */
|
||||||
uint mask = GetPresentSignals(tile) & SignalOnTrack(track);
|
uint mask = GetPresentSignals(tile) & SignalOnTrack(track);
|
||||||
SetSignalStates(tile, (GetSignalStates(tile) & ~mask) | ((HasBit(GetRailReservationTrackBits(tile), track) ? UINT_MAX : 0) & mask));
|
SetSignalStates(tile, (GetSignalStates(tile) & ~mask) | ((HasBit(GetRailReservationTrackBits(tile), track) && EnsureNoVehicleOnGround(tile).Succeeded() ? UINT_MAX : 0) & mask));
|
||||||
}
|
}
|
||||||
MarkTileDirtyByTile(tile);
|
MarkTileDirtyByTile(tile);
|
||||||
AddTrackToSignalBuffer(tile, track, _current_company);
|
AddTrackToSignalBuffer(tile, track, _current_company);
|
||||||
|
Loading…
Reference in New Issue
Block a user