summaryrefslogtreecommitdiff
path: root/openttd-git/signaltunnel.patch
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2019-12-26 21:21:51 +0100
committerErich Eckner <git@eckner.net>2019-12-26 21:21:51 +0100
commit7bde0532c176969e9d0d1339bb6915eca09b089b (patch)
treea39768e626932446991a8850261c6e3b3f131770 /openttd-git/signaltunnel.patch
parent9025909c3c492a0499a3c2371ebbe2fb49bc173b (diff)
downloadarchlinuxewe.git.save-7bde0532c176969e9d0d1339bb6915eca09b089b.tar.xz
openttd-git: 29183.e54184d18-2 -> 29230.18f03a300-1
Diffstat (limited to 'openttd-git/signaltunnel.patch')
-rw-r--r--openttd-git/signaltunnel.patch101
1 files changed, 50 insertions, 51 deletions
diff --git a/openttd-git/signaltunnel.patch b/openttd-git/signaltunnel.patch
index 236afd3c..308ae905 100644
--- a/openttd-git/signaltunnel.patch
+++ b/openttd-git/signaltunnel.patch
@@ -1,9 +1,9 @@
diff --git a/src/lang/english.txt b/src/lang/english.txt
-index 5115a0eb5f7..e8a3071f83d 100644
+index bc89cfee3d..4ac0917b4a 100644
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
-@@ -1558,6 +1558,8 @@ STR_CONFIG_SETTING_ALLOW_SHARES :Allow buying sh
- STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :When enabled, allow buying and selling of company shares. Shares will only be available for companies reaching a certain age
+@@ -1560,6 +1560,8 @@ STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Minimum company
+ STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Set the minimum age of a company for others to be able to buy and sell shares from them.
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Percentage of leg profit to pay in feeder systems: {STRING2}
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Percentage of income given to the intermediate legs in feeder systems, giving more control over the income
+STR_CONFIG_SETTING_SIMULATE_SIGNALS :Simulate signals in tunnels, bridges every: {STRING2}
@@ -11,7 +11,7 @@ index 5115a0eb5f7..e8a3071f83d 100644
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :When dragging, place signals every: {STRING2}
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Set the distance at which signals will be built on a track up to the next obstacle (signal, junction), if signals are dragged
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} tile{P 0 "" s}
-@@ -2703,8 +2705,10 @@ STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Ship depot
+@@ -2705,8 +2707,10 @@ STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Ship depot
# Industries come directly from their industry names
STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Railway tunnel
@@ -23,11 +23,11 @@ index 5115a0eb5f7..e8a3071f83d 100644
STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Steel girder rail bridge
STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Steel cantilever rail bridge
diff --git a/src/lang/russian.txt b/src/lang/russian.txt
-index ef03ace5b0d..2f71eb8cdd8 100644
+index 8c3776a776..004af31654 100644
--- a/src/lang/russian.txt
+++ b/src/lang/russian.txt
-@@ -1710,6 +1710,8 @@ STR_CONFIG_SETTING_ALLOW_SHARES :Разреши
- STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Разрешает торговлю акциями транспортных компаний. Акции выпускаются компаниями через некоторое время после основания.
+@@ -1711,6 +1711,8 @@ STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Мин. воз
+ STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Минимальный возраст, которого должна достичь компания для начала выпуска акций, которыми смогут торговать другие игроки.
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Процент дохода, начисляемый при частичной перевозке: {STRING}
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Процент прибыли, начисляемый транспорту за частичную перевозку груза.
+STR_CONFIG_SETTING_SIMULATE_SIGNALS :Симуляция светофоров в туннелях и на мостах каждые: {STRING}
@@ -35,7 +35,7 @@ index ef03ace5b0d..2f71eb8cdd8 100644
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :При перетаскивании ставить сигналы каждые: {STRING}
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Настройка периодичности расстановки сигналов методом перетаскивания. Сигналы будут устанавливаться до первого встреченного препятствия (пересечения или другого сигнала).
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} клет{P ку ки ок}
-@@ -2883,8 +2885,10 @@ STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Верфь
+@@ -2884,8 +2886,10 @@ STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Верфь
# Industries come directly from their industry names
STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Железнодорожный туннель
@@ -47,10 +47,10 @@ index ef03ace5b0d..2f71eb8cdd8 100644
STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Стальной балочный ж/д мост
STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Стальной консольный ж/д мост
diff --git a/src/pathfinder/follow_track.hpp b/src/pathfinder/follow_track.hpp
-index 31a78165091..3442e6f796f 100644
+index 2cfe4d9e4a..dbf225d785 100644
--- a/src/pathfinder/follow_track.hpp
+++ b/src/pathfinder/follow_track.hpp
-@@ -372,7 +372,7 @@ protected:
+@@ -370,7 +370,7 @@ protected:
if (IsTunnel(m_new_tile)) {
if (!m_is_tunnel) {
DiagDirection tunnel_enterdir = GetTunnelBridgeDirection(m_new_tile);
@@ -59,7 +59,7 @@ index 31a78165091..3442e6f796f 100644
m_err = EC_NO_WAY;
return false;
}
-@@ -380,7 +380,7 @@ protected:
+@@ -378,7 +378,7 @@ protected:
} else { // IsBridge(m_new_tile)
if (!m_is_bridge) {
DiagDirection ramp_enderdir = GetTunnelBridgeDirection(m_new_tile);
@@ -69,10 +69,10 @@ index 31a78165091..3442e6f796f 100644
return false;
}
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp
-index 1a4728c6c30..0194656c7ed 100644
+index 7de00327eb..b96e2240f6 100644
--- a/src/rail_cmd.cpp
+++ b/src/rail_cmd.cpp
-@@ -1062,9 +1062,12 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
+@@ -1060,9 +1060,12 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
if (sigtype > SIGTYPE_LAST) return CMD_ERROR;
if (cycle_start > cycle_stop || cycle_stop > SIGTYPE_LAST) return CMD_ERROR;
@@ -88,7 +88,7 @@ index 1a4728c6c30..0194656c7ed 100644
return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK);
}
/* Protect against invalid signal copying */
-@@ -1073,6 +1076,53 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
+@@ -1071,6 +1074,53 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
CommandCost ret = CheckTileOwnership(tile);
if (ret.Failed()) return ret;
@@ -142,7 +142,7 @@ index 1a4728c6c30..0194656c7ed 100644
/* See if this is a valid track combination for signals (no overlap) */
if (TracksOverlap(GetTrackBits(tile))) return_cmd_error(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK);
-@@ -1082,7 +1132,6 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
+@@ -1080,7 +1130,6 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
/* you can not convert a signal if no signal is on track */
if (convert_signal && !HasSignalOnTrack(tile, track)) return_cmd_error(STR_ERROR_THERE_ARE_NO_SIGNALS);
@@ -150,7 +150,7 @@ index 1a4728c6c30..0194656c7ed 100644
if (!HasSignalOnTrack(tile, track)) {
/* build new signals */
cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS]);
-@@ -1240,6 +1289,7 @@ static bool CheckSignalAutoFill(TileIndex &tile, Trackdir &trackdir, int &signal
+@@ -1238,6 +1287,7 @@ static bool CheckSignalAutoFill(TileIndex &tile, Trackdir &trackdir, int &signal
return true;
case MP_TUNNELBRIDGE: {
@@ -158,7 +158,7 @@ index 1a4728c6c30..0194656c7ed 100644
TileIndex orig_tile = tile; // backup old value
if (GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) return false;
-@@ -1351,7 +1401,8 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin
+@@ -1349,7 +1399,8 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin
bool had_success = false;
for (;;) {
/* only build/remove signals with the specified density */
@@ -168,7 +168,7 @@ index 1a4728c6c30..0194656c7ed 100644
uint32 p1 = GB(TrackdirToTrack(trackdir), 0, 3);
SB(p1, 3, 1, mode);
SB(p1, 4, 1, semaphores);
-@@ -1387,13 +1438,20 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin
+@@ -1385,13 +1436,20 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin
/* Collect cost. */
if (!test_only) {
@@ -195,7 +195,7 @@ index 1a4728c6c30..0194656c7ed 100644
/* The "No railway" error is the least important one. */
if (ret.GetErrorMessage() != STR_ERROR_THERE_IS_NO_RAILROAD_TRACK ||
last_error.GetErrorMessage() == INVALID_STRING_ID) {
-@@ -1464,22 +1522,48 @@ CommandCost CmdBuildSignalTrack(TileIndex tile, DoCommandFlag flags, uint32 p1,
+@@ -1462,22 +1520,48 @@ CommandCost CmdBuildSignalTrack(TileIndex tile, DoCommandFlag flags, uint32 p1,
CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
{
Track track = Extract<Track, 0, 3>(p1);
@@ -251,7 +251,7 @@ index 1a4728c6c30..0194656c7ed 100644
Train *v = nullptr;
if (HasReservedTracks(tile, TrackToTrackBits(track))) {
v = GetTrainForReservation(tile, track);
-@@ -1515,7 +1599,7 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1
+@@ -1513,7 +1597,7 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1
MarkTileDirtyByTile(tile);
}
@@ -261,10 +261,10 @@ index 1a4728c6c30..0194656c7ed 100644
/**
diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp
-index bde6e05579d..8f15bd07b41 100644
+index 4b7768dfa9..b17520b182 100644
--- a/src/settings_gui.cpp
+++ b/src/settings_gui.cpp
-@@ -1553,6 +1553,7 @@ static SettingsContainer &GetSettingsTree()
+@@ -1551,6 +1551,7 @@ static SettingsContainer &GetSettingsTree()
SettingsPage *construction = interface->Add(new SettingsPage(STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION));
{
construction->Add(new SettingEntry("gui.link_terraform_toolbar"));
@@ -273,10 +273,10 @@ index bde6e05579d..8f15bd07b41 100644
construction->Add(new SettingEntry("gui.persistent_buildingtools"));
construction->Add(new SettingEntry("gui.quick_goto"));
diff --git a/src/settings_type.h b/src/settings_type.h
-index 9315cdd968c..a1d1aa8c452 100644
+index 60db6c9f97..ae4a384966 100644
--- a/src/settings_type.h
+++ b/src/settings_type.h
-@@ -317,6 +317,7 @@ struct ConstructionSettings {
+@@ -315,6 +315,7 @@ struct ConstructionSettings {
bool freeform_edges; ///< allow terraforming the tiles at the map edges
uint8 extra_tree_placement; ///< (dis)allow building extra trees in-game
uint8 command_pause_level; ///< level/amount of commands that can't be executed while paused
@@ -285,10 +285,10 @@ index 9315cdd968c..a1d1aa8c452 100644
uint32 terraform_per_64k_frames; ///< how many tile heights may, over a long period, be terraformed per 65536 frames?
uint16 terraform_frame_burst; ///< how many tile heights may, over a short period, be terraformed?
diff --git a/src/signal.cpp b/src/signal.cpp
-index 8952000a51c..137e435fb30 100644
+index 068ca6193b..b9627483ac 100644
--- a/src/signal.cpp
+++ b/src/signal.cpp
-@@ -197,6 +197,14 @@ static Vehicle *TrainOnTileEnum(Vehicle *v, void *)
+@@ -195,6 +195,14 @@ static Vehicle *TrainOnTileEnum(Vehicle *v, void *)
return v;
}
@@ -303,7 +303,7 @@ index 8952000a51c..137e435fb30 100644
/**
* Perform some operations before adding data into Todo set
-@@ -376,17 +384,39 @@ static SigFlags ExploreSegment(Owner owner)
+@@ -374,17 +382,39 @@ static SigFlags ExploreSegment(Owner owner)
if (GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) continue;
DiagDirection dir = GetTunnelBridgeDirection(tile);
@@ -354,7 +354,7 @@ index 8952000a51c..137e435fb30 100644
}
}
break;
-@@ -494,7 +524,9 @@ static SigSegState UpdateSignalsInBuffer(Owner owner)
+@@ -492,7 +522,9 @@ static SigSegState UpdateSignalsInBuffer(Owner owner)
assert(GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL);
assert(dir == INVALID_DIAGDIR || dir == ReverseDiagDir(GetTunnelBridgeDirection(tile)));
_tbdset.Add(tile, INVALID_DIAGDIR); // we can safely start from wormhole centre
@@ -366,10 +366,10 @@ index 8952000a51c..137e435fb30 100644
case MP_RAILWAY:
diff --git a/src/table/settings.ini b/src/table/settings.ini
-index 800d6f79c18..df72c1ab609 100644
+index 4c3d6ce0d4..b2936d8d55 100644
--- a/src/table/settings.ini
+++ b/src/table/settings.ini
-@@ -541,6 +541,20 @@ str = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH
+@@ -539,6 +539,20 @@ str = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH
strhelp = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT
strval = STR_CONFIG_SETTING_TILE_LENGTH
@@ -391,10 +391,10 @@ index 800d6f79c18..df72c1ab609 100644
[SDT_NULL]
length = 1
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp
-index 71b34d6ba2f..256982315c8 100644
+index 5d02764b55..1eddbf665e 100644
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
-@@ -1851,6 +1851,17 @@ void ReverseTrainDirection(Train *v)
+@@ -1845,6 +1845,17 @@ void ReverseTrainDirection(Train *v)
return;
}
@@ -412,7 +412,7 @@ index 71b34d6ba2f..256982315c8 100644
/* VehicleExitDir does not always produce the desired dir for depots and
* tunnels/bridges that is needed for UpdateSignalsOnSegment. */
DiagDirection dir = VehicleExitDir(v->direction, v->track);
-@@ -2185,6 +2196,42 @@ static bool CheckTrainStayInDepot(Train *v)
+@@ -2179,6 +2190,42 @@ static bool CheckTrainStayInDepot(Train *v)
return false;
}
@@ -455,7 +455,7 @@ index 71b34d6ba2f..256982315c8 100644
/**
* Clear the reservation of \a tile that was just left by a wagon on \a track_dir.
* @param v %Train owning the reservation.
-@@ -2200,7 +2247,8 @@ static void ClearPathReservation(const Train *v, TileIndex tile, Trackdir track_
+@@ -2194,7 +2241,8 @@ static void ClearPathReservation(const Train *v, TileIndex tile, Trackdir track_
if (GetTunnelBridgeDirection(tile) == ReverseDiagDir(dir)) {
TileIndex end = GetOtherTunnelBridgeEnd(tile);
@@ -465,7 +465,7 @@ index 71b34d6ba2f..256982315c8 100644
/* Free the reservation only if no other train is on the tiles. */
SetTunnelBridgeReservation(tile, false);
SetTunnelBridgeReservation(end, false);
-@@ -2214,6 +2262,7 @@ static void ClearPathReservation(const Train *v, TileIndex tile, Trackdir track_
+@@ -2208,6 +2256,7 @@ static void ClearPathReservation(const Train *v, TileIndex tile, Trackdir track_
}
}
}
@@ -473,7 +473,7 @@ index 71b34d6ba2f..256982315c8 100644
}
} else if (IsRailStationTile(tile)) {
TileIndex new_tile = TileAddByDiagDir(tile, dir);
-@@ -3080,6 +3129,99 @@ static Vehicle *CheckTrainAtSignal(Vehicle *v, void *data)
+@@ -3074,6 +3123,99 @@ static Vehicle *CheckTrainAtSignal(Vehicle *v, void *data)
return t;
}
@@ -573,7 +573,7 @@ index 71b34d6ba2f..256982315c8 100644
/**
* Move a vehicle chain one movement stop forwards.
* @param v First vehicle to move.
-@@ -3265,6 +3407,23 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
+@@ -3259,6 +3401,23 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
goto invalid_rail;
}
@@ -597,7 +597,7 @@ index 71b34d6ba2f..256982315c8 100644
if (!HasBit(r, VETS_ENTERED_WORMHOLE)) {
Track track = FindFirstTrack(chosen_track);
Trackdir tdir = TrackDirectionToTrackdir(track, chosen_dir);
-@@ -3317,6 +3476,64 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
+@@ -3311,6 +3470,64 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
}
}
} else {
@@ -663,10 +663,10 @@ index 71b34d6ba2f..256982315c8 100644
/* Perform look-ahead on tunnel exit. */
if (v->IsFrontEngine()) {
diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp
-index fce0855d258..5bd1a1529f0 100644
+index 00c362e776..88e682fe9e 100644
--- a/src/tunnelbridge_cmd.cpp
+++ b/src/tunnelbridge_cmd.cpp
-@@ -30,6 +30,7 @@
+@@ -28,6 +28,7 @@
#include "date_func.h"
#include "clear_func.h"
#include "vehicle_func.h"
@@ -674,7 +674,7 @@ index fce0855d258..5bd1a1529f0 100644
#include "sound_func.h"
#include "tunnelbridge.h"
#include "cheat_type.h"
-@@ -1221,6 +1222,103 @@ static void DrawBridgeRoadBits(TileIndex head_tile, int x, int y, int z, int off
+@@ -1219,6 +1220,103 @@ static void DrawBridgeRoadBits(TileIndex head_tile, int x, int y, int z, int off
}
}
@@ -778,7 +778,7 @@ index fce0855d258..5bd1a1529f0 100644
/**
* Draws a tunnel of bridge tile.
* For tunnels, this is rather simple, as you only need to draw the entrance.
-@@ -1352,6 +1450,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
+@@ -1350,6 +1448,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
AddSortableSpriteToDraw(SPR_EMPTY_BOUNDING_BOX, PAL_NONE, ti->x, ti->y, BB_data[6], BB_data[7], TILE_HEIGHT, ti->z);
AddSortableSpriteToDraw(SPR_EMPTY_BOUNDING_BOX, PAL_NONE, ti->x + BB_data[4], ti->y + BB_data[5], BB_data[6], BB_data[7], TILE_HEIGHT, ti->z);
@@ -788,7 +788,7 @@ index fce0855d258..5bd1a1529f0 100644
DrawBridgeMiddle(ti);
} else { // IsBridge(ti->tile)
const PalSpriteID *psid;
-@@ -1457,6 +1558,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
+@@ -1455,6 +1556,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
}
}
@@ -798,7 +798,7 @@ index fce0855d258..5bd1a1529f0 100644
DrawBridgeMiddle(ti);
}
}
-@@ -1598,6 +1702,9 @@ void DrawBridgeMiddle(const TileInfo *ti)
+@@ -1596,6 +1700,9 @@ void DrawBridgeMiddle(const TileInfo *ti)
if (HasRailCatenaryDrawn(GetRailType(rampsouth))) {
DrawRailCatenaryOnBridge(ti);
}
@@ -808,7 +808,7 @@ index fce0855d258..5bd1a1529f0 100644
}
/* draw roof, the component of the bridge which is logically between the vehicle and the camera */
-@@ -1686,9 +1793,9 @@ static void GetTileDesc_TunnelBridge(TileIndex tile, TileDesc *td)
+@@ -1684,9 +1791,9 @@ static void GetTileDesc_TunnelBridge(TileIndex tile, TileDesc *td)
TransportType tt = GetTunnelBridgeTransportType(tile);
if (IsTunnel(tile)) {
@@ -820,7 +820,7 @@ index fce0855d258..5bd1a1529f0 100644
}
td->owner[0] = GetTileOwner(tile);
-@@ -1771,6 +1878,26 @@ static void TileLoop_TunnelBridge(TileIndex tile)
+@@ -1769,6 +1876,25 @@ static void TileLoop_TunnelBridge(TileIndex tile)
}
}
@@ -829,9 +829,8 @@ index fce0855d258..5bd1a1529f0 100644
+ /* Show vehicles found in tunnel. */
+ if (IsTunnelTile(tile)) {
+ int count = 0;
-+ const Train *t;
+ TileIndex tile_end = GetOtherTunnelBridgeEnd(tile);
-+ FOR_ALL_TRAINS(t) {
++ for (Train *t : Train::Iterate()) {
+ if (!t->IsFrontEngine()) continue;
+ if (tile == t->tile || tile_end == t->tile) {
+ ShowVehicleViewWindow(t);
@@ -847,7 +846,7 @@ index fce0855d258..5bd1a1529f0 100644
static TrackStatus GetTileTrackStatus_TunnelBridge(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
TransportType transport_type = GetTunnelBridgeTransportType(tile);
-@@ -2024,8 +2151,8 @@ extern const TileTypeProcs _tile_type_tunnelbridge_procs = {
+@@ -2022,8 +2148,8 @@ extern const TileTypeProcs _tile_type_tunnelbridge_procs = {
nullptr, // add_accepted_cargo_proc
GetTileDesc_TunnelBridge, // get_tile_desc_proc
GetTileTrackStatus_TunnelBridge, // get_tile_track_status_proc
@@ -859,10 +858,10 @@ index fce0855d258..5bd1a1529f0 100644
ChangeTileOwner_TunnelBridge, // change_tile_owner_proc
nullptr, // add_produced_cargo_proc
diff --git a/src/tunnelbridge_map.h b/src/tunnelbridge_map.h
-index 0f7f17b3ac6..57f338b8be3 100644
+index 62d3c14b2d..fa029dcf4d 100644
--- a/src/tunnelbridge_map.h
+++ b/src/tunnelbridge_map.h
-@@ -121,4 +121,98 @@ static inline TrackBits GetTunnelBridgeReservationTrackBits(TileIndex t)
+@@ -119,4 +119,98 @@ static inline TrackBits GetTunnelBridgeReservationTrackBits(TileIndex t)
return HasTunnelBridgeReservation(t) ? DiagDirToDiagTrackBits(GetTunnelBridgeDirection(t)) : TRACK_BIT_NONE;
}