Changeset - r17213:9e1a5315b952
[Not reviewed]
master
0 7 0
rubidium - 13 years ago 2011-02-04 16:40:38
rubidium@openttd.org
(svn r21962) -Feature-ish: GUI setting to disable reversing at signals
7 files changed with 19 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/lang/english.txt
Show inline comments
 
@@ -1353,12 +1353,13 @@ STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_V
 
STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_NPF             :NPF
 
STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_YAPF            :YAPF {BLUE}(Recommended)
 
STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS                         :{LTBLUE}Pathfinder for ships: {ORANGE}{STRING1}
 
STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_OPF                     :Original {BLUE}(Recommended)
 
STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_NPF                     :NPF
 
STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_YAPF                    :YAPF {RED}(Not recommended)
 
STR_CONFIG_SETTING_REVERSE_AT_SIGNALS                           :{LTBLUE}Automatic reversing at signals: {ORANGE}{STRING1}
 

	
 
STR_CONFIG_SETTING_QUERY_CAPTION                                :{WHITE}Change setting value
 

	
 
# Intro window
 
STR_INTRO_CAPTION                                               :{WHITE}OpenTTD {REV}
 

	
src/saveload/afterload.cpp
Show inline comments
 
@@ -2548,12 +2548,22 @@ bool AfterLoadGame()
 

	
 
			v->cur_real_order_index = v->cur_auto_order_index;
 
			v->UpdateRealOrderIndex();
 
		}
 
	}
 

	
 
	if (IsSavegameVersionBefore(159)) {
 
		/* If the savegame is old (before version 100), then the value of 255
 
		 * for these settings did not mean "disabled". As such everything
 
		 * before then did reverse.
 
		 * To simplify stuff we disable all turning around or we do not
 
		 * disable anything at all. So, if some reversing was disabled we
 
		 * will keep reversing disabled, otherwise it'll be turned on. */
 
		_settings_game.pf.reverse_at_signals = IsSavegameVersionBefore(100) || (_settings_game.pf.wait_oneway_signal != 255 && _settings_game.pf.wait_twoway_signal != 255 && _settings_game.pf.wait_for_pbs_path != 255);
 
	}
 

	
 
	/* Road stops is 'only' updating some caches */
 
	AfterLoadRoadStops();
 
	AfterLoadLabelMaps();
 

	
 
	GamelogPrintDebug(1);
 

	
src/saveload/saveload.cpp
Show inline comments
 
@@ -220,13 +220,13 @@
 
 *  153   21263
 
 *  154   21426
 
 *  155   21453
 
 *  156   21728
 
 *  157   21862
 
 *  158   21933
 
 *  159   21960
 
 *  159   21962
 
 */
 
extern const uint16 SAVEGAME_VERSION = 159; ///< Current savegame version of OpenTTD.
 

	
 
SavegameType _savegame_type; ///< type of savegame we are loading
 

	
 
uint32 _ttdp_version;     ///< version of TTDP savegame (if applicable)
src/settings_gui.cpp
Show inline comments
 
@@ -1446,12 +1446,13 @@ static SettingEntry _settings_vehicles_s
 
	SettingEntry("order.serviceathelipad"),
 
};
 
/** Servicing sub-page */
 
static SettingsPage _settings_vehicles_servicing_page = {_settings_vehicles_servicing, lengthof(_settings_vehicles_servicing)};
 

	
 
static SettingEntry _settings_vehicles_trains[] = {
 
	SettingEntry("pf.reverse_at_signals"),
 
	SettingEntry("vehicle.train_acceleration_model"),
 
	SettingEntry("vehicle.train_slope_steepness"),
 
	SettingEntry("vehicle.max_train_length"),
 
	SettingEntry("vehicle.wagon_speed_limits"),
 
	SettingEntry("vehicle.disable_elrails"),
 
	SettingEntry("vehicle.freight_trains"),
src/settings_type.h
Show inline comments
 
@@ -310,12 +310,13 @@ struct PathfinderSettings {
 
	uint8  pathfinder_for_ships;             ///< the pathfinder to use for ships
 
	bool   new_pathfinding_all;              ///< use the newest pathfinding algorithm for all
 

	
 
	bool   roadveh_queue;                    ///< buggy road vehicle queueing
 
	bool   forbid_90_deg;                    ///< forbid trains to make 90 deg turns
 

	
 
	bool   reverse_at_signals;               ///< whether to reverse at signals at all
 
	byte   wait_oneway_signal;               ///< waitingtime in days before a oneway signal
 
	byte   wait_twoway_signal;               ///< waitingtime in days before a twoway signal
 

	
 
	bool   reserve_paths;                    ///< always reserve paths regardless of signal type.
 
	byte   wait_for_pbs_path;                ///< how long to wait for a path reservation.
 
	byte   path_backoff_interval;            ///< ticks between checks for a free path.
src/table/settings.h
Show inline comments
 
@@ -470,12 +470,13 @@ const SettingDesc _settings[] = {
 
	    SDT_BOOL(GameSettings, ai.ai_disable_veh_aircraft,                                          0, 0, false,                    STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT,     NULL),
 
	    SDT_BOOL(GameSettings, ai.ai_disable_veh_ship,                                              0, 0, false,                    STR_CONFIG_SETTING_AI_BUILDS_SHIPS,        NULL),
 
	 SDT_CONDVAR(GameSettings, ai.ai_max_opcode_till_suspend,       SLE_UINT32,107, SL_MAX_VERSION, 0, NG, 10000, 5000,250000,2500, STR_CONFIG_SETTING_AI_MAX_OPCODES,         NULL),
 

	
 
	     SDT_VAR(GameSettings, vehicle.extend_vehicle_life,          SLE_UINT8,                     0, 0,     0,     0,     100, 0, STR_NULL,                                  NULL),
 
	     SDT_VAR(GameSettings, economy.dist_local_authority,         SLE_UINT8,                     0, 0,    20,     5,      60, 0, STR_NULL,                                  NULL),
 
	SDT_CONDBOOL(GameSettings, pf.reverse_at_signals,                          159, SL_MAX_VERSION, 0, 0, false,                    STR_CONFIG_SETTING_REVERSE_AT_SIGNALS,     NULL),
 
	     SDT_VAR(GameSettings, pf.wait_oneway_signal,                SLE_UINT8,                     0, 0,    15,     2,     255, 0, STR_NULL,                                  NULL),
 
	     SDT_VAR(GameSettings, pf.wait_twoway_signal,                SLE_UINT8,                     0, 0,    41,     2,     255, 0, STR_NULL,                                  NULL),
 
	 SDT_CONDVAR(GameSettings, economy.town_noise_population[0],    SLE_UINT16, 96, SL_MAX_VERSION, 0, 0,   800,   200,   65535, 0, STR_NULL,                                  NULL),
 
	 SDT_CONDVAR(GameSettings, economy.town_noise_population[1],    SLE_UINT16, 96, SL_MAX_VERSION, 0, 0,  2000,   400,   65535, 0, STR_NULL,                                  NULL),
 
	 SDT_CONDVAR(GameSettings, economy.town_noise_population[2],    SLE_UINT16, 96, SL_MAX_VERSION, 0, 0,  4000,   800,   65535, 0, STR_NULL,                                  NULL),
 

	
src/train_cmd.cpp
Show inline comments
 
@@ -2987,18 +2987,18 @@ static void TrainController(Train *v, Ve
 
						if (HasBit(v->flags, VRF_TRAIN_STUCK)) return;
 

	
 
						if (!HasSignalOnTrackdir(gp.new_tile, ReverseTrackdir(i))) {
 
							v->cur_speed = 0;
 
							v->subspeed = 0;
 
							v->progress = 255 - 100;
 
							if (_settings_game.pf.wait_oneway_signal == 255 || ++v->wait_counter < _settings_game.pf.wait_oneway_signal * 20) return;
 
							if (!_settings_game.pf.reverse_at_signals || ++v->wait_counter < _settings_game.pf.wait_oneway_signal * 20) return;
 
						} else if (HasSignalOnTrackdir(gp.new_tile, i)) {
 
							v->cur_speed = 0;
 
							v->subspeed = 0;
 
							v->progress = 255 - 10;
 
							if (_settings_game.pf.wait_twoway_signal == 255 || ++v->wait_counter < _settings_game.pf.wait_twoway_signal * 73) {
 
							if (!_settings_game.pf.reverse_at_signals || ++v->wait_counter < _settings_game.pf.wait_twoway_signal * 73) {
 
								DiagDirection exitdir = TrackdirToExitdir(i);
 
								TileIndex o_tile = TileAddByDiagDir(gp.new_tile, exitdir);
 

	
 
								exitdir = ReverseDiagDir(exitdir);
 

	
 
								/* check if a train is waiting on the other side */
 
@@ -3007,13 +3007,13 @@ static void TrainController(Train *v, Ve
 
						}
 

	
 
						/* If we would reverse but are currently in a PBS block and
 
						 * reversing of stuck trains is disabled, don't reverse.
 
						 * This does not apply if the reason for reversing is a one-way
 
						 * signal blocking us, because a train would then be stuck forever. */
 
						if (_settings_game.pf.wait_for_pbs_path == 255 && !HasOnewaySignalBlockingTrackdir(gp.new_tile, i) &&
 
						if (!_settings_game.pf.reverse_at_signals && !HasOnewaySignalBlockingTrackdir(gp.new_tile, i) &&
 
								UpdateSignalsOnSegment(v->tile, enterdir, v->owner) == SIGSEG_PBS) {
 
							v->wait_counter = 0;
 
							return;
 
						}
 
						goto reverse_train_direction;
 
					} else {
 
@@ -3575,13 +3575,13 @@ static bool TrainLocoHandler(Train *v, b
 

	
 
	/* Handle stuck trains. */
 
	if (!mode && HasBit(v->flags, VRF_TRAIN_STUCK)) {
 
		++v->wait_counter;
 

	
 
		/* Should we try reversing this tick if still stuck? */
 
		bool turn_around = v->wait_counter % (_settings_game.pf.wait_for_pbs_path * DAY_TICKS) == 0 && _settings_game.pf.wait_for_pbs_path < 255;
 
		bool turn_around = v->wait_counter % (_settings_game.pf.wait_for_pbs_path * DAY_TICKS) == 0 && _settings_game.pf.reverse_at_signals;
 

	
 
		if (!turn_around && v->wait_counter % _settings_game.pf.path_backoff_interval != 0 && v->force_proceed == TFP_NONE) return true;
 
		if (!TryPathReserve(v)) {
 
			/* Still stuck. */
 
			if (turn_around) ReverseTrainDirection(v);
 

	
0 comments (0 inline, 0 general)