(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:
		@@ -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);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user