Fix path-only signal cycle mode being ignored when using realistic braking

tmp-jgrpp
Jonathan G Rennison 3 weeks ago
parent a9dbd793b4
commit 1a6a4c9a6c

@ -284,13 +284,13 @@ static void GenericPlaceSignals(TileIndex tile)
/* Which signals should we cycle through? */
SignalCycleGroups cycle_types;
if (_settings_game.vehicle.train_braking_model == TBM_REALISTIC) {
if (_settings_client.gui.cycle_signal_types == SIGNAL_CYCLE_PATH) {
cycle_types = SCG_PBS;
} else if (_settings_game.vehicle.train_braking_model == TBM_REALISTIC) {
cycle_types = SCG_BLOCK | SCG_PBS;
} else if (_settings_client.gui.cycle_signal_types == SIGNAL_CYCLE_ALL) {
cycle_types = SCG_PBS;
if (_settings_client.gui.signal_gui_mode == SIGNAL_GUI_ALL) cycle_types |= SCG_BLOCK;
} else if (_settings_client.gui.cycle_signal_types == SIGNAL_CYCLE_PATH) {
cycle_types = SCG_PBS;
} else {
cycle_types = SCG_CURRENT_GROUP;
}

@ -70,18 +70,18 @@ static const TrackdirBits _enterdir_to_trackdirbits[DIAGDIR_END] = {
SignalType NextSignalType(SignalType cur, SignalCycleGroups which_signals)
{
if (which_signals == SCG_CURRENT_GROUP) which_signals = IsPbsSignal(cur) ? SCG_PBS : SCG_BLOCK;
bool pbs = which_signals & SCG_PBS;
bool block = which_signals & SCG_BLOCK;
if (_settings_game.vehicle.train_braking_model == TBM_REALISTIC) {
switch (cur) {
case SIGTYPE_PBS: return SIGTYPE_PBS_ONEWAY;
case SIGTYPE_PBS_ONEWAY: return SIGTYPE_BLOCK;
case SIGTYPE_PBS_ONEWAY: return block ? SIGTYPE_BLOCK : SIGTYPE_PBS;
default: return SIGTYPE_PBS;
}
}
if (which_signals == SCG_CURRENT_GROUP) which_signals = IsPbsSignal(cur) ? SCG_PBS : SCG_BLOCK;
bool pbs = which_signals & SCG_PBS;
bool block = which_signals & SCG_BLOCK;
switch(cur) {
case SIGTYPE_BLOCK: return block ? SIGTYPE_ENTRY : SIGTYPE_PBS;
case SIGTYPE_ENTRY: return block ? SIGTYPE_EXIT : SIGTYPE_PBS;

Loading…
Cancel
Save