mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r13937) -Codechange [YAPP]: Don't cycle through two-sided PBS signals during build. (michi_cc)
This commit is contained in:
parent
07a43863c4
commit
3e055b32bf
|
@ -889,6 +889,9 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, uint32 flags, uint32 p1, uint32
|
|||
/* convert the present signal to the chosen type and variant */
|
||||
SetSignalType(tile, track, sigtype);
|
||||
SetSignalVariant(tile, track, sigvar);
|
||||
if (IsPbsSignal(sigtype) && (GetPresentSignals(tile) & SignalOnTrack(track)) == SignalOnTrack(track)) {
|
||||
SetPresentSignals(tile, (GetPresentSignals(tile) & ~SignalOnTrack(track)) | KillFirstBit(SignalOnTrack(track)));
|
||||
}
|
||||
}
|
||||
|
||||
} else if (ctrl_pressed) {
|
||||
|
@ -898,6 +901,9 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, uint32 flags, uint32 p1, uint32
|
|||
if (sigtype < cycle_start || sigtype > cycle_stop) sigtype = cycle_start;
|
||||
|
||||
SetSignalType(tile, track, sigtype);
|
||||
if (IsPbsSignal(sigtype) && (GetPresentSignals(tile) & SignalOnTrack(track)) == SignalOnTrack(track)) {
|
||||
SetPresentSignals(tile, (GetPresentSignals(tile) & ~SignalOnTrack(track)) | KillFirstBit(SignalOnTrack(track)));
|
||||
}
|
||||
} else {
|
||||
/* cycle the signal side: both -> left -> right -> both -> ... */
|
||||
CycleSignalSide(tile, track);
|
||||
|
|
|
@ -380,7 +380,7 @@ static inline void CycleSignalSide(TileIndex t, Track track)
|
|||
byte pos = (track == TRACK_LOWER || track == TRACK_RIGHT) ? 4 : 6;
|
||||
|
||||
sig = GB(_m[t].m3, pos, 2);
|
||||
if (--sig == 0) sig = 3;
|
||||
if (--sig == 0) sig = IsPbsSignal(GetSignalType(t, track)) ? 2 : 3;
|
||||
SB(_m[t].m3, pos, 2, sig);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue