diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 6249ea7b6c..0321417ee5 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -274,10 +274,10 @@ static void GenericPlaceSignals(TileIndex tile) /* Which signals should we cycle through? */ uint8 cycle_types; - if (_settings_client.gui.cycle_signal_types == SIGNAL_CYCLE_ALL && _settings_client.gui.signal_gui_mode == SIGNAL_GUI_ALL) { - cycle_types = SIGTYPE_NORMAL | (SIGTYPE_LAST << 3); + if (_settings_client.gui.cycle_signal_types == SIGNAL_CYCLE_ALL && (_settings_client.gui.signal_gui_mode == SIGNAL_GUI_ALL || _settings_game.vehicle.train_braking_model == TBM_REALISTIC)) { + cycle_types = SIGNAL_CYCLE_ALL; } else { - cycle_types = SIGTYPE_PBS | (SIGTYPE_LAST << 3); + cycle_types = SIGNAL_CYCLE_PATH; } if (w != nullptr) { diff --git a/src/signal_func.h b/src/signal_func.h index a01e3f293b..4ea4ab1ac1 100644 --- a/src/signal_func.h +++ b/src/signal_func.h @@ -114,8 +114,8 @@ static inline bool IsSignalSpritePBS(SignalType type) static inline SignalType NextSignalType(SignalType cur, uint which_signals) { - bool pbs = (which_signals != 0); - bool block = (which_signals != 1); + bool pbs = true; + bool block = (which_signals == SIGNAL_CYCLE_ALL); switch(cur) { case SIGTYPE_NORMAL: return block ? SIGTYPE_ENTRY : SIGTYPE_PBS;