summaryrefslogtreecommitdiff
path: root/src/rail_gui.cpp
diff options
context:
space:
mode:
authorKuhnovic <68320206+Kuhnovic@users.noreply.github.com>2021-01-07 10:17:05 +0100
committerGitHub <noreply@github.com>2021-01-07 10:17:05 +0100
commita3a792837220390735b44536762b0127f05b7a63 (patch)
treea3a4ba762b4b3da4ae7678a5bb837dd3cdf2b1c5 /src/rail_gui.cpp
parent1b675e7075d1c2375cc8da5a928fb6b7be6317d5 (diff)
downloadopenttd-a3a792837220390735b44536762b0127f05b7a63.tar.xz
Feature: option to auto remove signals when in the way during rail construction (#8274)
Diffstat (limited to 'src/rail_gui.cpp')
-rw-r--r--src/rail_gui.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp
index 788189dcc..7529efcec 100644
--- a/src/rail_gui.cpp
+++ b/src/rail_gui.cpp
@@ -91,7 +91,7 @@ void CcPlaySound_SPLAT_RAIL(const CommandCost &result, TileIndex tile, uint32 p1
static void GenericPlaceRail(TileIndex tile, int cmd)
{
- DoCommandP(tile, _cur_railtype, cmd,
+ DoCommandP(tile, _cur_railtype, cmd | (_settings_client.gui.auto_remove_signals << 3),
_remove_button_clicked ?
CMD_REMOVE_SINGLE_RAIL | CMD_MSG(STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK) :
CMD_BUILD_SINGLE_RAIL | CMD_MSG(STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK),
@@ -107,10 +107,11 @@ static void GenericPlaceRail(TileIndex tile, int cmd)
*/
static void PlaceExtraDepotRail(TileIndex tile, DiagDirection dir, Track track)
{
- if (GetRailTileType(tile) != RAIL_TILE_NORMAL) return;
+ if (GetRailTileType(tile) == RAIL_TILE_DEPOT) return;
+ if (GetRailTileType(tile) == RAIL_TILE_SIGNALS && !_settings_client.gui.auto_remove_signals) return;
if ((GetTrackBits(tile) & DiagdirReachesTracks(dir)) == 0) return;
- DoCommandP(tile, _cur_railtype, track, CMD_BUILD_SINGLE_RAIL);
+ DoCommandP(tile, _cur_railtype, track | (_settings_client.gui.auto_remove_signals << 3), CMD_BUILD_SINGLE_RAIL);
}
/** Additional pieces of track to add at the entrance of a depot. */
@@ -350,7 +351,8 @@ static void BuildRailClick_Remove(Window *w)
static void DoRailroadTrack(int mode)
{
- DoCommandP(TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y), _cur_railtype | (mode << 6),
+ uint32 p2 = _cur_railtype | (mode << 6) | (_settings_client.gui.auto_remove_signals << 11);
+ DoCommandP(TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y), p2,
_remove_button_clicked ?
CMD_REMOVE_RAILROAD_TRACK | CMD_MSG(STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK) :
CMD_BUILD_RAILROAD_TRACK | CMD_MSG(STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK),