Fix ScriptRail::BuildSignal when using realistic braking with block signals
This commit is contained in:
@@ -448,6 +448,7 @@ static bool IsValidSignalType(int signal_type)
|
|||||||
EnforcePrecondition(false, ScriptMap::DistanceManhattan(tile, front) == 1)
|
EnforcePrecondition(false, ScriptMap::DistanceManhattan(tile, front) == 1)
|
||||||
EnforcePrecondition(false, ::IsPlainRailTile(tile));
|
EnforcePrecondition(false, ::IsPlainRailTile(tile));
|
||||||
EnforcePrecondition(false, ::IsValidSignalType(signal));
|
EnforcePrecondition(false, ::IsValidSignalType(signal));
|
||||||
|
EnforcePrecondition(false, signal < SIGNALTYPE_TWOWAY || _settings_game.vehicle.train_braking_model == TBM_ORIGINAL);
|
||||||
|
|
||||||
Track track = INVALID_TRACK;
|
Track track = INVALID_TRACK;
|
||||||
uint signal_cycles = 0;
|
uint signal_cycles = 0;
|
||||||
@@ -464,7 +465,7 @@ static bool IsValidSignalType(int signal_type)
|
|||||||
|
|
||||||
uint p1 = track;
|
uint p1 = track;
|
||||||
if (signal < SIGNALTYPE_TWOWAY) {
|
if (signal < SIGNALTYPE_TWOWAY) {
|
||||||
if (signal != SIGNALTYPE_PBS && signal != SIGNALTYPE_PBS_ONEWAY) signal_cycles++;
|
if (signal != SIGNALTYPE_PBS && signal != SIGNALTYPE_PBS_ONEWAY && _settings_game.vehicle.train_braking_model == TBM_ORIGINAL) signal_cycles++;
|
||||||
p1 |= (signal_cycles << 15);
|
p1 |= (signal_cycles << 15);
|
||||||
}
|
}
|
||||||
p1 |= ((signal >= SIGNALTYPE_TWOWAY ? signal ^ SIGNALTYPE_TWOWAY : signal) << 5);
|
p1 |= ((signal >= SIGNALTYPE_TWOWAY ? signal ^ SIGNALTYPE_TWOWAY : signal) << 5);
|
||||||
|
Reference in New Issue
Block a user