summaryrefslogtreecommitdiff
path: root/openttd-git
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2018-07-26 23:53:21 +0200
committerErich Eckner <git@eckner.net>2018-07-26 23:53:21 +0200
commit1ccd4a96adde40cf0a3e00ebb5e56119fdcdde07 (patch)
treeddd6d3f62073a0a59b560e58c99598bc795a7106 /openttd-git
parent53727c7194eaea5b22fc77c675817a2a2730bbd6 (diff)
downloadarchlinuxewe.git.save-1ccd4a96adde40cf0a3e00ebb5e56119fdcdde07.tar.xz
openttd-git 28192.2a868b9f3-1 -> 28208.b885f6267-1
Diffstat (limited to 'openttd-git')
-rwxr-xr-xopenttd-git/PKGBUILD4
-rw-r--r--openttd-git/everything.patch331
2 files changed, 198 insertions, 137 deletions
diff --git a/openttd-git/PKGBUILD b/openttd-git/PKGBUILD
index 4414cea6..5e5fc0fe 100755
--- a/openttd-git/PKGBUILD
+++ b/openttd-git/PKGBUILD
@@ -1,6 +1,6 @@
# Maintainer: Erich Eckner <arch at eckner dot net>
pkgname=openttd-git
-pkgver=28204.8090580f7
+pkgver=28208.b885f6267
_commit=${pkgver#*.}
pkgrel=1
pkgdesc="A FOSS clone of Transport Tycoon Deluxe."
@@ -37,7 +37,7 @@ source=(
"clipboard.grf"
)
sha512sums=('SKIP'
- '09295720c9274464345a63053677840507036d6896179f44754de93d1306e3725f713b6c922e40e3598d01bf4fa3a608f8aff1847b78f7bad87a0565d8f82598'
+ 'a243ed901d5a661bce85e6a01c6dd6e8aeeff86ff14ca714130ac3bc52d55b0c8b1f824023504e0c0ed4a9e91904fe216f77f096d005dc08e98d776333563c7b'
'aa1f5d5c4fd9ff487bc03ed5c10701e99ae9fd29ae0cd65a06171486298558d1c26ced49ac8687acc5b1003a6538f6c83917992348cbd2b7426afdf0759cb1a5')
pkgver() {
diff --git a/openttd-git/everything.patch b/openttd-git/everything.patch
index 29d84bb8..b733c193 100644
--- a/openttd-git/everything.patch
+++ b/openttd-git/everything.patch
@@ -1866,7 +1866,7 @@ index 000000000..47fffb238
+ </g>
+</svg>
diff --git a/projects/openttd_vs100.vcxproj b/projects/openttd_vs100.vcxproj
-index 6fbd5e3f0..b9984d783 100644
+index e400081df..dc44ed960 100644
--- a/projects/openttd_vs100.vcxproj
+++ b/projects/openttd_vs100.vcxproj
@@ -325,6 +325,7 @@
@@ -1928,7 +1928,7 @@ index 6fbd5e3f0..b9984d783 100644
<ClInclude Include="..\src\widgets\company_widget.h" />
<ClInclude Include="..\src\widgets\console_widget.h" />
<ClInclude Include="..\src\widgets\date_widget.h" />
-@@ -835,6 +845,7 @@
+@@ -836,6 +846,7 @@
<ClCompile Include="..\src\aircraft_cmd.cpp" />
<ClCompile Include="..\src\autoreplace_cmd.cpp" />
<ClCompile Include="..\src\clear_cmd.cpp" />
@@ -1936,7 +1936,7 @@ index 6fbd5e3f0..b9984d783 100644
<ClCompile Include="..\src\company_cmd.cpp" />
<ClCompile Include="..\src\depot_cmd.cpp" />
<ClCompile Include="..\src\group_cmd.cpp" />
-@@ -842,6 +853,7 @@
+@@ -843,6 +854,7 @@
<ClCompile Include="..\src\misc_cmd.cpp" />
<ClCompile Include="..\src\object_cmd.cpp" />
<ClCompile Include="..\src\order_cmd.cpp" />
@@ -1945,7 +1945,7 @@ index 6fbd5e3f0..b9984d783 100644
<ClCompile Include="..\src\road_cmd.cpp" />
<ClCompile Include="..\src\roadveh_cmd.cpp" />
diff --git a/projects/openttd_vs100.vcxproj.filters b/projects/openttd_vs100.vcxproj.filters
-index 7eee89731..dbab8cceb 100644
+index 47f431e55..b91cbc942 100644
--- a/projects/openttd_vs100.vcxproj.filters
+++ b/projects/openttd_vs100.vcxproj.filters
@@ -132,6 +132,9 @@
@@ -2027,7 +2027,7 @@ index 7eee89731..dbab8cceb 100644
<ClInclude Include="..\src\widgets\company_widget.h">
<Filter>Widgets</Filter>
</ClInclude>
-@@ -1662,6 +1692,9 @@
+@@ -1665,6 +1695,9 @@
<ClCompile Include="..\src\clear_cmd.cpp">
<Filter>Command handlers</Filter>
</ClCompile>
@@ -2037,7 +2037,7 @@ index 7eee89731..dbab8cceb 100644
<ClCompile Include="..\src\company_cmd.cpp">
<Filter>Command handlers</Filter>
</ClCompile>
-@@ -1683,6 +1716,9 @@
+@@ -1686,6 +1719,9 @@
<ClCompile Include="..\src\order_cmd.cpp">
<Filter>Command handlers</Filter>
</ClCompile>
@@ -2048,7 +2048,7 @@ index 7eee89731..dbab8cceb 100644
<Filter>Command handlers</Filter>
</ClCompile>
diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj
-index 2ea6fdcd6..2814f0952 100644
+index c5e41e925..e538833d7 100644
--- a/projects/openttd_vs80.vcproj
+++ b/projects/openttd_vs80.vcproj
@@ -482,6 +482,10 @@
@@ -2140,7 +2140,7 @@ index 2ea6fdcd6..2814f0952 100644
<File
RelativePath=".\..\src\widgets\company_widget.h"
>
-@@ -2542,6 +2582,10 @@
+@@ -2546,6 +2586,10 @@
RelativePath=".\..\src\clear_cmd.cpp"
>
</File>
@@ -2151,7 +2151,7 @@ index 2ea6fdcd6..2814f0952 100644
<File
RelativePath=".\..\src\company_cmd.cpp"
>
-@@ -2570,6 +2614,10 @@
+@@ -2574,6 +2618,10 @@
RelativePath=".\..\src\order_cmd.cpp"
>
</File>
@@ -2163,7 +2163,7 @@ index 2ea6fdcd6..2814f0952 100644
RelativePath=".\..\src\rail_cmd.cpp"
>
diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj
-index 174677586..5add42720 100644
+index d2e5744a2..95ea8f19e 100644
--- a/projects/openttd_vs90.vcproj
+++ b/projects/openttd_vs90.vcproj
@@ -479,6 +479,10 @@
@@ -2255,7 +2255,7 @@ index 174677586..5add42720 100644
<File
RelativePath=".\..\src\widgets\company_widget.h"
>
-@@ -2539,6 +2579,10 @@
+@@ -2543,6 +2583,10 @@
RelativePath=".\..\src\clear_cmd.cpp"
>
</File>
@@ -2266,7 +2266,7 @@ index 174677586..5add42720 100644
<File
RelativePath=".\..\src\company_cmd.cpp"
>
-@@ -2567,6 +2611,10 @@
+@@ -2571,6 +2615,10 @@
RelativePath=".\..\src\order_cmd.cpp"
>
</File>
@@ -2278,7 +2278,7 @@ index 174677586..5add42720 100644
RelativePath=".\..\src\rail_cmd.cpp"
>
diff --git a/source.list b/source.list
-index ee8e69ef5..75c6754b5 100644
+index 5dec0e861..ab81c2f23 100644
--- a/source.list
+++ b/source.list
@@ -9,6 +9,7 @@ cargomonitor.cpp
@@ -2340,7 +2340,7 @@ index ee8e69ef5..75c6754b5 100644
widgets/company_widget.h
widgets/console_widget.h
widgets/date_widget.h
-@@ -570,6 +580,7 @@ widgets/waypoint_widget.h
+@@ -571,6 +581,7 @@ widgets/waypoint_widget.h
aircraft_cmd.cpp
autoreplace_cmd.cpp
clear_cmd.cpp
@@ -2348,7 +2348,7 @@ index ee8e69ef5..75c6754b5 100644
company_cmd.cpp
depot_cmd.cpp
group_cmd.cpp
-@@ -577,6 +588,7 @@ industry_cmd.cpp
+@@ -578,6 +589,7 @@ industry_cmd.cpp
misc_cmd.cpp
object_cmd.cpp
order_cmd.cpp
@@ -2443,7 +2443,7 @@ index d1e0d6024..c76374512 100644
+template int GetBridgeHeight<false>(TileIndex t);
+template int GetBridgeHeight<true>(GenericTileIndex t);
diff --git a/src/bridge_map.h b/src/bridge_map.h
-index 74c6974db..c2e4d9b23 100644
+index 75b20498d..4ee4f45ce 100644
--- a/src/bridge_map.h
+++ b/src/bridge_map.h
@@ -21,31 +21,46 @@
@@ -2583,7 +2583,7 @@ index 74c6974db..c2e4d9b23 100644
/**
* Generic part to make a bridge ramp for both roads and rails.
-@@ -126,17 +168,22 @@ static inline void SetBridgeMiddle(TileIndex t, Axis a)
+@@ -126,18 +168,23 @@ static inline void SetBridgeMiddle(TileIndex t, Axis a)
* @param rt the road or rail type
* @note this function should not be called directly.
*/
@@ -2594,17 +2594,19 @@ index 74c6974db..c2e4d9b23 100644
SetTileType(t, MP_TUNNELBRIDGE);
SetTileOwner(t, o);
- _m[t].m2 = 0;
-- _m[t].m3 = rt;
+- _m[t].m3 = 0;
- _m[t].m4 = 0;
- _m[t].m5 = 1 << 7 | tt << 2 | d;
- SB(_me[t].m6, 2, 4, bridgetype);
- _me[t].m7 = 0;
+- _me[t].m8 = rt;
+ GetTile(t)->m2 = 0;
-+ GetTile(t)->m3 = rt;
++ GetTile(t)->m3 = 0;
+ GetTile(t)->m4 = 0;
+ GetTile(t)->m5 = 1 << 7 | tt << 2 | d;
+ SB(GetTileEx(t)->m6, 2, 4, bridgetype);
+ GetTileEx(t)->m7 = 0;
++ GetTileEx(t)->m8 = rt;
}
+/** @copydoc MakeBridgeRamp(TileIndexT<Tgeneric>::T,Owner,BridgeType,DiagDirection,TransportType,uint)*/
+static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, TransportType tt, uint rt) { return MakeBridgeRamp<false>(t, o, bridgetype, d, tt, rt); }
@@ -2613,7 +2615,7 @@ index 74c6974db..c2e4d9b23 100644
/**
* Make a bridge ramp for roads.
-@@ -148,13 +195,18 @@ static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, D
+@@ -149,13 +196,18 @@ static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, D
* @param d the direction this ramp must be facing
* @param r the road type of the bridge
*/
@@ -2633,7 +2635,7 @@ index 74c6974db..c2e4d9b23 100644
/**
* Make a bridge ramp for rails.
-@@ -164,10 +216,15 @@ static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, Owner owner_road, Ow
+@@ -165,10 +217,15 @@ static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, Owner owner_road, Ow
* @param d the direction this ramp must be facing
* @param r the rail type of the bridge
*/
@@ -2650,7 +2652,7 @@ index 74c6974db..c2e4d9b23 100644
/**
* Make a bridge ramp for aqueducts.
-@@ -175,9 +232,14 @@ static inline void MakeRailBridgeRamp(TileIndex t, Owner o, BridgeType bridgetyp
+@@ -176,9 +233,14 @@ static inline void MakeRailBridgeRamp(TileIndex t, Owner o, BridgeType bridgetyp
* @param o the new owner of the bridge ramp
* @param d the direction this ramp must be facing
*/
@@ -5858,10 +5860,10 @@ index 18f27807d..19bff768b 100644
/* We update every tile every 256 ticks, so divide the map size by 2^8 = 256 */
diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt
-index bd8395506..11b60a5f2 100644
+index b888e3799..d9c1bff91 100644
--- a/src/lang/afrikaans.txt
+++ b/src/lang/afrikaans.txt
-@@ -4864,10 +4864,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4871,10 +4871,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Spektator, {1:STRING}
# Viewport strings
@@ -5881,10 +5883,10 @@ index bd8395506..11b60a5f2 100644
STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN}
STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN}
diff --git a/src/lang/basque.txt b/src/lang/basque.txt
-index ddb3afb60..3be636c0b 100644
+index cd97bf02c..434f185ec 100644
--- a/src/lang/basque.txt
+++ b/src/lang/basque.txt
-@@ -4727,10 +4727,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4734,10 +4734,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Ikuslea, {1:STRING}
# Viewport strings
@@ -5904,10 +5906,10 @@ index ddb3afb60..3be636c0b 100644
STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN}
STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN}
diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt
-index c9aba3b21..00b2d0e11 100644
+index 54f7aac65..e50949a76 100644
--- a/src/lang/catalan.txt
+++ b/src/lang/catalan.txt
-@@ -4883,10 +4883,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4950,10 +4950,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :{G=Masculin}Espectador, {1:STRING}
# Viewport strings
@@ -10918,10 +10920,10 @@ index 000000000..2909a9c82
+
+STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
diff --git a/src/lang/danish.txt b/src/lang/danish.txt
-index 45321d19f..9ecd2f300 100644
+index 4b9ea6bf5..396993a08 100644
--- a/src/lang/danish.txt
+++ b/src/lang/danish.txt
-@@ -4889,10 +4889,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4896,10 +4896,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Tilskuer, {1:STRING}
# Viewport strings
@@ -10941,10 +10943,10 @@ index 45321d19f..9ecd2f300 100644
STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN}
STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN}
diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt
-index 764a0fc10..6db63370d 100644
+index 9b387f2f7..86ffaacca 100644
--- a/src/lang/dutch.txt
+++ b/src/lang/dutch.txt
-@@ -4882,10 +4882,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4889,10 +4889,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Toeschouwer, {1:STRING}
# Viewport strings
@@ -11197,10 +11199,10 @@ index 1be138706..6391ae276 100644
STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION}
STR_BLACK_STRING :{BLACK}{STRING}
diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt
-index dd1e7effa..81b1eaa02 100644
+index 80c27eebf..1547470ed 100644
--- a/src/lang/estonian.txt
+++ b/src/lang/estonian.txt
-@@ -4921,10 +4921,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4928,10 +4928,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Vaatleja, {1:STRING}
# Viewport strings
@@ -11220,10 +11222,10 @@ index dd1e7effa..81b1eaa02 100644
STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN}
STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN}
diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt
-index 9a17e2387..fabdfe8d0 100644
+index 2eb53ca21..1f6300df3 100644
--- a/src/lang/faroese.txt
+++ b/src/lang/faroese.txt
-@@ -4369,10 +4369,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4376,10 +4376,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Eygleiðari, {1:STRING}
# Viewport strings
@@ -11243,7 +11245,7 @@ index 9a17e2387..fabdfe8d0 100644
STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN}
STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN}
diff --git a/src/lang/german.txt b/src/lang/german.txt
-index e91d83c28..0bc50c0a2 100644
+index cd7eb37d8..16cef397e 100644
--- a/src/lang/german.txt
+++ b/src/lang/german.txt
@@ -233,6 +233,7 @@ STR_TOOLTIP_GROUP_ORDER :{BLACK}Gruppier
@@ -11311,7 +11313,7 @@ index e91d83c28..0bc50c0a2 100644
# Industry cargoes window
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Produktionskette für {STRING}
STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Produktionskette für {STRING}
-@@ -3153,6 +3169,8 @@ STR_CARGO_RATING_OUTSTANDING :Hervorragend
+@@ -3160,6 +3176,8 @@ STR_CARGO_RATING_OUTSTANDING :Hervorragend
STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Hauptansicht zur Station scrollen. Strg+Klick öffnet neue Zusatzansicht bei der Station
STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Namen der Station ändern
@@ -11320,7 +11322,7 @@ index e91d83c28..0bc50c0a2 100644
STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Alle Züge, die diesen Bahnhof anfahren, anzeigen
STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Alle Straßenfahrzeuge, die diese Station anfahren, anzeigen
STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Alle Flugzeuge, die diesen Flughafen anfliegen, anzeigen
-@@ -3948,6 +3966,8 @@ STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Umschalt
+@@ -3955,6 +3973,8 @@ STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Umschalt
STR_TIMETABLE_ARRIVAL_ABBREVIATION :an
STR_TIMETABLE_DEPARTURE_ABBREVIATION :ab
@@ -11329,7 +11331,7 @@ index e91d83c28..0bc50c0a2 100644
# Date window (for timetable)
STR_DATE_CAPTION :{WHITE}Datum auswählen
-@@ -4883,10 +4903,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4890,10 +4910,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Zuschauer, {1:STRING}
# Viewport strings
@@ -16340,10 +16342,10 @@ index 000000000..f0cc17660
+
+STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt
-index 3fe531977..86cc728e0 100644
+index 6d8a4bae6..2953e17c6 100644
--- a/src/lang/icelandic.txt
+++ b/src/lang/icelandic.txt
-@@ -4622,10 +4622,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4629,10 +4629,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Áhorfandi, {1:STRING}
# Viewport strings
@@ -16363,10 +16365,10 @@ index 3fe531977..86cc728e0 100644
STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN}
STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN}
diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt
-index 7c8c41700..c8eb8061f 100644
+index f3300c711..3df583fb0 100644
--- a/src/lang/indonesian.txt
+++ b/src/lang/indonesian.txt
-@@ -4863,10 +4863,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4870,10 +4870,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Penonton, {1:STRING}
# Viewport strings
@@ -16386,10 +16388,10 @@ index 7c8c41700..c8eb8061f 100644
STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN}
STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN}
diff --git a/src/lang/italian.txt b/src/lang/italian.txt
-index f4d5f8a98..1f64f028c 100644
+index 1ffafdcd7..0abc65085 100644
--- a/src/lang/italian.txt
+++ b/src/lang/italian.txt
-@@ -4928,10 +4928,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4979,10 +4979,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Spettatore, {1:STRING}
# Viewport strings
@@ -21429,10 +21431,10 @@ index 000000000..988a95758
+
+STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt
-index 324bacc92..0fe6ba4b0 100644
+index c4978c0b8..2a87de85c 100644
--- a/src/lang/luxembourgish.txt
+++ b/src/lang/luxembourgish.txt
-@@ -4882,10 +4882,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4889,10 +4889,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Zuschauer, {1:STRING}
# Viewport strings
@@ -26442,10 +26444,10 @@ index 000000000..d1d26f75d
+
+STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt
-index 449527190..7db7b0d4c 100644
+index aa53408be..daa8eb3e2 100644
--- a/src/lang/norwegian_nynorsk.txt
+++ b/src/lang/norwegian_nynorsk.txt
-@@ -4779,10 +4779,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4786,10 +4786,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Tilskuar, {1:STRING}
# Viewport strings
@@ -26465,10 +26467,10 @@ index 449527190..7db7b0d4c 100644
STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN}
STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN}
diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt
-index 82662903f..94432055a 100644
+index b071b9c18..9249f8ca0 100644
--- a/src/lang/portuguese.txt
+++ b/src/lang/portuguese.txt
-@@ -4883,10 +4883,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4890,10 +4890,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Espectador, {1:STRING}
# Viewport strings
@@ -26488,10 +26490,10 @@ index 82662903f..94432055a 100644
STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN}
STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN}
diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt
-index 7dd3c4a54..f99f023dd 100644
+index d0deb739e..0c00b44fc 100644
--- a/src/lang/spanish.txt
+++ b/src/lang/spanish.txt
-@@ -4883,10 +4883,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
+@@ -4890,10 +4890,18 @@ STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STR
STR_SAVEGAME_NAME_SPECTATOR :Espectador, {1:STRING}
# Viewport strings
@@ -32280,11 +32282,11 @@ index 21d69b138..63152e6b4 100644
/**
* Determines the DiagDirection to get from one tile to another.
diff --git a/src/map_type.h b/src/map_type.h
-index 620885e5d..ee419d1f1 100644
+index 7af391b46..fca0c2440 100644
--- a/src/map_type.h
+++ b/src/map_type.h
-@@ -37,6 +37,22 @@ struct TileExtended {
- byte m7; ///< Primarily used for newgrf support
+@@ -38,6 +38,22 @@ struct TileExtended {
+ uint16 m8; ///< General purpose
};
+/** Tile array. */
@@ -32306,7 +32308,7 @@ index 620885e5d..ee419d1f1 100644
/**
* An offset value between to tiles.
*
-@@ -62,9 +78,11 @@ struct TileIndexDiffC {
+@@ -63,9 +79,11 @@ struct TileIndexDiffC {
/** Minimal and maximal map width and height */
static const uint MIN_MAP_SIZE_BITS = 6; ///< Minimal size of map is equal to 2 ^ MIN_MAP_SIZE_BITS
@@ -32937,7 +32939,7 @@ index d538064a2..fff67c68c 100644
/**
* Finds out if a company has a certain railtype available
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp
-index 5bc97a58d..cac0c3dea 100644
+index d21c1468c..b9b27c0b2 100644
--- a/src/rail_cmd.cpp
+++ b/src/rail_cmd.cpp
@@ -11,6 +11,7 @@
@@ -32974,7 +32976,7 @@ index 5bc97a58d..cac0c3dea 100644
-CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
+CommandCost CmdBuildSingleRails(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
{
- RailType railtype = Extract<RailType, 0, 4>(p1);
+ RailType railtype = Extract<RailType, 0, 6>(p1);
- Track track = Extract<Track, 0, 3>(p2);
+ TrackBits trackbits = (TrackBits)GB(p2, 0, 6);
CommandCost cost(EXPENSES_CONSTRUCTION);
@@ -33589,15 +33591,15 @@ index 5bc97a58d..cac0c3dea 100644
+ CopyPasteTile_Rail, // copypaste_tile_proc
};
diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp
-index de8d43474..2288dcb85 100644
+index 5a533e5c5..4c1555086 100644
--- a/src/rail_gui.cpp
+++ b/src/rail_gui.cpp
@@ -192,7 +192,7 @@ static void PlaceRail_Station(TileIndex tile)
VpStartPlaceSizing(tile, VPM_X_AND_Y_LIMITED, DDSP_BUILD_STATION);
VpSetPlaceSizingLimit(_settings_game.station.station_spread);
} else {
-- uint32 p1 = _cur_railtype | _railstation.orientation << 4 | _settings_client.gui.station_numtracks << 8 | _settings_client.gui.station_platlength << 16 | _ctrl_pressed << 24;
-+ uint32 p1 = _cur_railtype | _railstation.orientation << 4 | _settings_client.gui.station_numtracks << 8 | _settings_client.gui.station_platlength << 16 | (_settings_game.station.adjacent_stations && _ctrl_pressed) << 24;
+- uint32 p1 = _cur_railtype | _railstation.orientation << 6 | _settings_client.gui.station_numtracks << 8 | _settings_client.gui.station_platlength << 16 | _ctrl_pressed << 24;
++ uint32 p1 = _cur_railtype | _railstation.orientation << 6 | _settings_client.gui.station_numtracks << 8 | _settings_client.gui.station_platlength << 16 | (_settings_game.station.adjacent_stations && _ctrl_pressed) << 24;
uint32 p2 = _railstation.station_class | _railstation.station_type << 8 | INVALID_STATION << 16;
int w = _settings_client.gui.station_numtracks;
@@ -33605,13 +33607,13 @@ index de8d43474..2288dcb85 100644
if (_railstation.orientation == AXIS_X) Swap(numtracks, platlength);
-- uint32 p1 = _cur_railtype | _railstation.orientation << 4 | numtracks << 8 | platlength << 16 | _ctrl_pressed << 24;
-+ uint32 p1 = _cur_railtype | _railstation.orientation << 4 | numtracks << 8 | platlength << 16 | (_settings_game.station.adjacent_stations && _ctrl_pressed) << 24;
+- uint32 p1 = _cur_railtype | _railstation.orientation << 6 | numtracks << 8 | platlength << 16 | _ctrl_pressed << 24;
++ uint32 p1 = _cur_railtype | _railstation.orientation << 6 | numtracks << 8 | platlength << 16 | (_settings_game.station.adjacent_stations && _ctrl_pressed) << 24;
uint32 p2 = _railstation.station_class | _railstation.station_type << 8 | INVALID_STATION << 16;
CommandContainer cmdcont = { ta.tile, p1, p2, CMD_BUILD_RAIL_STATION | CMD_MSG(STR_ERROR_CAN_T_BUILD_RAILROAD_STATION), CcStation, "" };
diff --git a/src/rail_map.h b/src/rail_map.h
-index 2431a7920..b185d155f 100644
+index 74afe5ace..254e17119 100644
--- a/src/rail_map.h
+++ b/src/rail_map.h
@@ -34,11 +34,16 @@ enum RailTileType {
@@ -33726,8 +33728,8 @@ index 2431a7920..b185d155f 100644
+template <bool Tgeneric>
+static inline RailType GetRailType(typename TileIndexT<Tgeneric>::T t)
{
-- return (RailType)GB(_m[t].m3, 0, 4);
-+ return (RailType)GB(GetTile(t)->m3, 0, 4);
+- return (RailType)GB(_me[t].m8, 0, 6);
++ return (RailType)GB(GetTileEx(t)->m8, 0, 6);
}
+/** @copydoc GetRailType(TileIndexT<Tgeneric>::T) */
+static inline RailType GetRailType(TileIndex t) { return GetRailType<false>(t); }
@@ -33743,8 +33745,8 @@ index 2431a7920..b185d155f 100644
+template <bool Tgeneric>
+static inline void SetRailType(typename TileIndexT<Tgeneric>::T t, RailType r)
{
-- SB(_m[t].m3, 0, 4, r);
-+ SB(GetTile(t)->m3, 0, 4, r);
+- SB(_me[t].m8, 0, 6, r);
++ SB(GetTileEx(t)->m8, 0, 6, r);
}
+/** @copydoc SetRailType(TileIndexT<Tgeneric>::T,RailType) */
+static inline void SetRailType(TileIndex t, RailType r) { SetRailType<false>(t, r); }
@@ -34091,7 +34093,7 @@ index 2431a7920..b185d155f 100644
}
static inline bool IsSnowRailGround(TileIndex t)
-@@ -517,29 +632,38 @@ static inline bool IsSnowRailGround(TileIndex t)
+@@ -517,31 +632,40 @@ static inline bool IsSnowRailGround(TileIndex t)
}
@@ -34102,43 +34104,49 @@ index 2431a7920..b185d155f 100644
SetTileType(t, MP_RAILWAY);
SetTileOwner(t, o);
- _m[t].m2 = 0;
-- _m[t].m3 = r;
+- _m[t].m3 = 0;
- _m[t].m4 = 0;
- _m[t].m5 = RAIL_TILE_NORMAL << 6 | b;
- SB(_me[t].m6, 2, 4, 0);
- _me[t].m7 = 0;
+- _me[t].m8 = r;
+-}
+-
+-
+-static inline void MakeRailDepot(TileIndex t, Owner o, DepotID did, DiagDirection d, RailType r)
+ GetTile(t)->m2 = 0;
-+ GetTile(t)->m3 = r;
++ GetTile(t)->m3 = 0;
+ GetTile(t)->m4 = 0;
+ GetTile(t)->m5 = RAIL_TILE_NORMAL << 6 | b;
+ SB(GetTileEx(t)->m6, 2, 4, 0);
+ GetTileEx(t)->m7 = 0;
- }
++ GetTileEx(t)->m8 = r;
++}
+/** @copydoc MakeRailNormal(TileIndexT<Tgeneric>::T,Owner,TrackBits,RailType) */
+static inline void MakeRailNormal(TileIndex t, Owner o, TrackBits b, RailType r) { MakeRailNormal<false>(t, o, b, r); }
+/** @copydoc MakeRailNormal(TileIndexT<Tgeneric>::T,Owner,TrackBits,RailType) */
+static inline void MakeRailNormal(GenericTileIndex t, Owner o, TrackBits b, RailType r) { MakeRailNormal<true>(t, o, b, r); }
-
--
--static inline void MakeRailDepot(TileIndex t, Owner o, DepotID did, DiagDirection d, RailType r)
++
+template <bool Tgeneric>
+inline void MakeRailDepot(typename TileIndexT<Tgeneric>::T t, Owner o, DepotID did, DiagDirection d, RailType r)
{
SetTileType(t, MP_RAILWAY);
SetTileOwner(t, o);
- _m[t].m2 = did;
-- _m[t].m3 = r;
+- _m[t].m3 = 0;
- _m[t].m4 = 0;
- _m[t].m5 = RAIL_TILE_DEPOT << 6 | d;
- SB(_me[t].m6, 2, 4, 0);
- _me[t].m7 = 0;
+- _me[t].m8 = r;
-}
+ GetTile(t)->m2 = did;
-+ GetTile(t)->m3 = r;
++ GetTile(t)->m3 = 0;
+ GetTile(t)->m4 = 0;
+ GetTile(t)->m5 = RAIL_TILE_DEPOT << 6 | d;
+ SB(GetTileEx(t)->m6, 2, 4, 0);
+ GetTileEx(t)->m7 = 0;
++ GetTileEx(t)->m8 = r;
+}
+/** @copydoc MakeRailDepot(TileIndexT<Tgeneric>::T,Owner,DepotID,DiagDirection,RailType) */
+static inline void MakeRailDepot(TileIndex t, Owner o, DepotID did, DiagDirection d, RailType r) { MakeRailDepot<false>(t, o, did, d, r); }
@@ -34461,7 +34469,7 @@ index 6faa42262..2b7db72b7 100644
}
break;
diff --git a/src/road_map.h b/src/road_map.h
-index 693730294..d1bfaec8c 100644
+index 5b3e6b090..de507bd9f 100644
--- a/src/road_map.h
+++ b/src/road_map.h
@@ -32,11 +32,16 @@ enum RoadTileType {
@@ -34987,7 +34995,7 @@ index 693730294..d1bfaec8c 100644
/**
* Make a level crossing.
-@@ -574,18 +684,23 @@ static inline void MakeRoadNormal(TileIndex t, RoadBits bits, RoadTypes rot, Tow
+@@ -574,19 +684,24 @@ static inline void MakeRoadNormal(TileIndex t, RoadBits bits, RoadTypes rot, Tow
* @param rot New present road types.
* @param town Town ID if the road is a town-owned road.
*/
@@ -34998,17 +35006,19 @@ index 693730294..d1bfaec8c 100644
SetTileType(t, MP_ROAD);
SetTileOwner(t, rail);
- _m[t].m2 = town;
-- _m[t].m3 = rat;
+- _m[t].m3 = 0;
- _m[t].m4 = 0;
- _m[t].m5 = ROAD_TILE_CROSSING << 6 | roaddir;
- SB(_me[t].m6, 2, 4, 0);
- _me[t].m7 = rot << 6 | road;
+- _me[t].m8 = rat;
+ GetTile(t)->m2 = town;
-+ GetTile(t)->m3 = rat;
++ GetTile(t)->m3 = 0;
+ GetTile(t)->m4 = 0;
+ GetTile(t)->m5 = ROAD_TILE_CROSSING << 6 | roaddir;
+ SB(GetTileEx(t)->m6, 2, 4, 0);
+ GetTileEx(t)->m7 = rot << 6 | road;
++ GetTileEx(t)->m8 = rat;
SetRoadOwner(t, ROADTYPE_TRAM, tram);
}
+/** @copydoc MakeRoadCrossing(TileIndexT<Tgeneric>::T,Owner,Owner,Owner,Axis,RailType,RoadTypes,uint) */
@@ -35018,7 +35028,7 @@ index 693730294..d1bfaec8c 100644
/**
* Make a road depot.
-@@ -595,17 +710,22 @@ static inline void MakeRoadCrossing(TileIndex t, Owner road, Owner tram, Owner r
+@@ -596,17 +711,22 @@ static inline void MakeRoadCrossing(TileIndex t, Owner road, Owner tram, Owner r
* @param dir Direction of the depot exit.
* @param rt Road type of the depot.
*/
@@ -35062,7 +35072,7 @@ index ed67a5221..4715731ac 100644
}
diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp
-index 33c49fb61..4f841bbba 100644
+index cca9ad328..310590957 100644
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -125,7 +125,7 @@ void SetWaterClassDependingOnSurroundings(TileIndex t, bool include_invalid_wate
@@ -35355,7 +35365,36 @@ index 33c49fb61..4f841bbba 100644
}
}
}
-@@ -1289,23 +1292,23 @@ bool AfterLoadGame()
+@@ -1219,24 +1222,24 @@ bool AfterLoadGame()
+ for (TileIndex t = 0; t < map_size; t++) {
+ switch (GetTileType(t)) {
+ case MP_RAILWAY:
+- SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
++ SetRailType(t, (RailType)GB(GetTile(t)->m3, 0, 4));
+ break;
+
+ case MP_ROAD:
+ if (IsLevelCrossing(t)) {
+- SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
++ SetRailType(t, (RailType)GB(GetTile(t)->m3, 0, 4));
+ }
+ break;
+
+ case MP_STATION:
+ if (HasStationRail(t)) {
+- SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
++ SetRailType(t, (RailType)GB(GetTile(t)->m3, 0, 4));
+ }
+ break;
+
+ case MP_TUNNELBRIDGE:
+ if (GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL) {
+- SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
++ SetRailType(t, (RailType)GB(GetTile(t)->m3, 0, 4));
+ }
+ break;
+
+@@ -1321,23 +1324,23 @@ bool AfterLoadGame()
* (see the code somewhere above) so don't use m4, use m2 instead. */
/* convert PBS signals to combo-signals */
@@ -35385,7 +35424,7 @@ index 33c49fb61..4f841bbba 100644
break;
default: break;
-@@ -1414,31 +1417,31 @@ bool AfterLoadGame()
+@@ -1446,31 +1449,31 @@ bool AfterLoadGame()
if (IsSavegameVersionBefore(53)) {
for (TileIndex t = 0; t < map_size; t++) {
if (IsTileType(t, MP_HOUSE)) {
@@ -35426,7 +35465,7 @@ index 33c49fb61..4f841bbba 100644
SetHouseCompleted(t, true);
}
}
-@@ -1453,19 +1456,19 @@ bool AfterLoadGame()
+@@ -1485,19 +1488,19 @@ bool AfterLoadGame()
if (IsTileType(t, MP_INDUSTRY)) {
switch (GetIndustryGfx(t)) {
case GFX_POWERPLANT_SPARKS:
@@ -35449,7 +35488,7 @@ index 33c49fb61..4f841bbba 100644
break;
default: // No animation states to change
-@@ -1513,8 +1516,8 @@ bool AfterLoadGame()
+@@ -1545,8 +1548,8 @@ bool AfterLoadGame()
if (IsSavegameVersionBefore(52)) {
for (TileIndex t = 0; t < map_size; t++) {
@@ -35460,7 +35499,7 @@ index 33c49fb61..4f841bbba 100644
}
}
}
-@@ -1577,10 +1580,10 @@ bool AfterLoadGame()
+@@ -1609,10 +1612,10 @@ bool AfterLoadGame()
for (TileIndex t = 0; t < map_size; t++) {
if (IsTileType(t, MP_RAILWAY) && HasSignals(t)) {
/* move signal states */
@@ -35474,7 +35513,7 @@ index 33c49fb61..4f841bbba 100644
}
}
}
-@@ -1623,7 +1626,7 @@ bool AfterLoadGame()
+@@ -1655,7 +1658,7 @@ bool AfterLoadGame()
if (IsSavegameVersionBefore(83)) {
for (TileIndex t = 0; t < map_size; t++) {
if (IsShipDepotTile(t)) {
@@ -35483,7 +35522,7 @@ index 33c49fb61..4f841bbba 100644
}
}
}
-@@ -1659,8 +1662,8 @@ bool AfterLoadGame()
+@@ -1691,8 +1694,8 @@ bool AfterLoadGame()
if (IsSavegameVersionBefore(81)) {
for (TileIndex t = 0; t < map_size; t++) {
if (GetTileType(t) == MP_TREES) {
@@ -35494,7 +35533,7 @@ index 33c49fb61..4f841bbba 100644
}
}
}
-@@ -1727,8 +1730,8 @@ bool AfterLoadGame()
+@@ -1759,8 +1762,8 @@ bool AfterLoadGame()
case STATION_OILRIG:
case STATION_DOCK:
case STATION_BUOY:
@@ -35505,7 +35544,7 @@ index 33c49fb61..4f841bbba 100644
break;
default:
-@@ -1738,8 +1741,8 @@ bool AfterLoadGame()
+@@ -1770,8 +1773,8 @@ bool AfterLoadGame()
break;
case MP_WATER:
@@ -35516,7 +35555,7 @@ index 33c49fb61..4f841bbba 100644
break;
case MP_OBJECT:
-@@ -1766,7 +1769,7 @@ bool AfterLoadGame()
+@@ -1798,7 +1801,7 @@ bool AfterLoadGame()
MakeCanal(t, o, Random());
}
} else if (IsShipDepot(t)) {
@@ -35525,7 +35564,7 @@ index 33c49fb61..4f841bbba 100644
SetWaterClass(t, o == OWNER_WATER ? WATER_CLASS_SEA : WATER_CLASS_CANAL);
}
}
-@@ -1855,8 +1858,8 @@ bool AfterLoadGame()
+@@ -1887,8 +1890,8 @@ bool AfterLoadGame()
/* Increase HouseAnimationFrame from 5 to 7 bits */
for (TileIndex t = 0; t < map_size; t++) {
if (IsTileType(t, MP_HOUSE) && GetHouseType(t) >= NEW_HOUSE_OFFSET) {
@@ -35536,7 +35575,7 @@ index 33c49fb61..4f841bbba 100644
}
}
}
-@@ -1889,7 +1892,7 @@ bool AfterLoadGame()
+@@ -1921,7 +1924,7 @@ bool AfterLoadGame()
/* Replace "house construction year" with "house age" */
if (IsTileType(t, MP_HOUSE) && IsHouseCompleted(t)) {
@@ -35545,7 +35584,7 @@ index 33c49fb61..4f841bbba 100644
}
}
}
-@@ -1903,10 +1906,10 @@ bool AfterLoadGame()
+@@ -1935,10 +1938,10 @@ bool AfterLoadGame()
case MP_RAILWAY:
if (HasSignals(t)) {
/* move the signal variant */
@@ -35560,7 +35599,7 @@ index 33c49fb61..4f841bbba 100644
}
/* Clear PBS reservation on track */
-@@ -1998,11 +2001,11 @@ bool AfterLoadGame()
+@@ -2030,11 +2033,11 @@ bool AfterLoadGame()
for (TileIndex t = 0; t < map_size; t++) {
/* Check for HQ bit being set, instead of using map accessor,
* since we've already changed it code-wise */
@@ -35575,7 +35614,7 @@ index 33c49fb61..4f841bbba 100644
}
}
}
-@@ -2011,13 +2014,13 @@ bool AfterLoadGame()
+@@ -2043,13 +2046,13 @@ bool AfterLoadGame()
if (!IsTileType(t, MP_OBJECT)) continue;
/* Reordering/generalisation of the object bits. */
@@ -35594,7 +35633,7 @@ index 33c49fb61..4f841bbba 100644
}
}
-@@ -2030,15 +2033,15 @@ bool AfterLoadGame()
+@@ -2062,15 +2065,15 @@ bool AfterLoadGame()
/* No towns, so remove all objects! */
DoClearSquare(t);
} else {
@@ -35614,7 +35653,7 @@ index 33c49fb61..4f841bbba 100644
int size = type == OBJECT_HQ ? 2 : 1;
if (!Object::CanAllocateItem()) {
-@@ -2052,14 +2055,14 @@ bool AfterLoadGame()
+@@ -2084,14 +2087,14 @@ bool AfterLoadGame()
o->location.w = size;
o->location.h = size;
o->build_date = _date;
@@ -35632,7 +35671,7 @@ index 33c49fb61..4f841bbba 100644
}
}
}
-@@ -2273,8 +2276,8 @@ bool AfterLoadGame()
+@@ -2305,8 +2308,8 @@ bool AfterLoadGame()
if (IsSavegameVersionBefore(128)) {
const Depot *d;
FOR_ALL_DEPOTS(d) {
@@ -35643,7 +35682,7 @@ index 33c49fb61..4f841bbba 100644
}
}
-@@ -2296,16 +2299,16 @@ bool AfterLoadGame()
+@@ -2328,16 +2331,16 @@ bool AfterLoadGame()
if (IsTileType(t, MP_CLEAR)) {
if (GetRawClearGround(t) == CLEAR_SNOW) {
SetClearGroundDensity(t, CLEAR_GRASS, GetClearDensity(t));
@@ -35666,7 +35705,7 @@ index 33c49fb61..4f841bbba 100644
}
}
}
-@@ -2419,23 +2422,23 @@ bool AfterLoadGame()
+@@ -2451,23 +2454,23 @@ bool AfterLoadGame()
switch (GetTileType(t)) {
case MP_HOUSE:
if (GetHouseType(t) >= NEW_HOUSE_OFFSET) {
@@ -35699,7 +35738,7 @@ index 33c49fb61..4f841bbba 100644
break;
default:
-@@ -2760,16 +2763,16 @@ bool AfterLoadGame()
+@@ -2792,16 +2795,16 @@ bool AfterLoadGame()
for (TileIndex t = 0; t < map_size; t++) {
if (!IsTileType(t, MP_CLEAR) && !IsTileType(t, MP_TREES)) continue;
if (IsTileType(t, MP_CLEAR) && IsClearGround(t, CLEAR_FIELDS)) continue;
@@ -35720,7 +35759,7 @@ index 33c49fb61..4f841bbba 100644
}
}
-@@ -2886,9 +2889,9 @@ bool AfterLoadGame()
+@@ -2918,9 +2921,9 @@ bool AfterLoadGame()
/* Move ObjectType from map to pool */
for (TileIndex t = 0; t < map_size; t++) {
if (IsTileType(t, MP_OBJECT)) {
@@ -35734,7 +35773,7 @@ index 33c49fb61..4f841bbba 100644
}
}
diff --git a/src/saveload/map_sl.cpp b/src/saveload/map_sl.cpp
-index 86a185ca4..3a37173d4 100644
+index 693ddb7ce..d3c371d8a 100644
--- a/src/saveload/map_sl.cpp
+++ b/src/saveload/map_sl.cpp
@@ -56,7 +56,7 @@ static void Load_MAPT()
@@ -35912,6 +35951,24 @@ index 86a185ca4..3a37173d4 100644
SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT8);
}
}
+@@ -279,7 +279,7 @@ static void Load_MAP8()
+
+ for (TileIndex i = 0; i != size;) {
+ SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT16);
+- for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _me[i++].m8 = buf[j];
++ for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) GetTileEx(i++)->m8 = buf[j];
+ }
+ }
+
+@@ -290,7 +290,7 @@ static void Save_MAP8()
+
+ SlSetLength(size * sizeof(uint16));
+ for (TileIndex i = 0; i != size;) {
+- for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = _me[i++].m8;
++ for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] = GetTileEx(i++)->m8;
+ SlArray(buf, MAP_SL_BUF_SIZE, SLE_UINT16);
+ }
+ }
diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp
index 1974bb31f..d5b4f3a46 100644
--- a/src/saveload/oldloader_sl.cpp
@@ -36249,10 +36306,10 @@ index 0f9396985..0abd04cbf 100644
new_wp->owner = GetTileOwner(t);
diff --git a/src/script/api/game/game_window.hpp.sq b/src/script/api/game/game_window.hpp.sq
-index aa0b34b1e..070e30cd7 100644
+index 7ce2c7029..580f71a09 100644
--- a/src/script/api/game/game_window.hpp.sq
+++ b/src/script/api/game/game_window.hpp.sq
-@@ -250,6 +250,28 @@ void SQGSWindow_Register(Squirrel *engine)
+@@ -252,6 +252,28 @@ void SQGSWindow_Register(Squirrel *engine)
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_BUILD_SEL, "WID_BV_BUILD_SEL");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_BV_RENAME, "WID_BV_RENAME");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_C_PANEL, "WID_C_PANEL");
@@ -36281,7 +36338,7 @@ index aa0b34b1e..070e30cd7 100644
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_C_CAPTION, "WID_C_CAPTION");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_C_FACE, "WID_C_FACE");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_C_FACE_TITLE, "WID_C_FACE_TITLE");
-@@ -1126,6 +1148,7 @@ void SQGSWindow_Register(Squirrel *engine)
+@@ -1138,6 +1160,7 @@ void SQGSWindow_Register(Squirrel *engine)
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TT_LOWER_LAND, "WID_TT_LOWER_LAND");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TT_RAISE_LAND, "WID_TT_RAISE_LAND");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TT_LEVEL_LAND, "WID_TT_LEVEL_LAND");
@@ -36290,7 +36347,7 @@ index aa0b34b1e..070e30cd7 100644
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TT_BUY_LAND, "WID_TT_BUY_LAND");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_TT_PLANT_TREES, "WID_TT_PLANT_TREES");
diff --git a/src/script/api/script_window.hpp b/src/script/api/script_window.hpp
-index c2b6662fb..7b350e257 100644
+index 9dcf58e05..3c7f1ce39 100644
--- a/src/script/api/script_window.hpp
+++ b/src/script/api/script_window.hpp
@@ -23,6 +23,7 @@
@@ -36301,7 +36358,7 @@ index c2b6662fb..7b350e257 100644
#include "../../widgets/company_widget.h"
#include "../../widgets/console_widget.h"
#include "../../widgets/date_widget.h"
-@@ -993,6 +994,43 @@ public:
+@@ -1006,6 +1007,43 @@ public:
WID_C_PANEL = ::WID_C_PANEL, ///< Panel where all cheats are shown in.
};
@@ -36345,7 +36402,7 @@ index c2b6662fb..7b350e257 100644
/* automatically generated from ../../widgets/company_widget.h */
/** Widgets of the #CompanyWindow class. */
enum CompanyWidgets {
-@@ -2313,6 +2351,7 @@ public:
+@@ -2345,6 +2383,7 @@ public:
WID_TT_LOWER_LAND = ::WID_TT_LOWER_LAND, ///< Lower land button.
WID_TT_RAISE_LAND = ::WID_TT_RAISE_LAND, ///< Raise land button.
WID_TT_LEVEL_LAND = ::WID_TT_LEVEL_LAND, ///< Level land button.
@@ -36354,7 +36411,7 @@ index c2b6662fb..7b350e257 100644
WID_TT_BUY_LAND = ::WID_TT_BUY_LAND, ///< Buy land button.
WID_TT_PLANT_TREES = ::WID_TT_PLANT_TREES, ///< Plant trees button (note: opens separate window, no place-push-button).
diff --git a/src/script/api/template/template_window.hpp.sq b/src/script/api/template/template_window.hpp.sq
-index a21a75ab8..14cac3dd8 100644
+index 3077215ec..2489b55ed 100644
--- a/src/script/api/template/template_window.hpp.sq
+++ b/src/script/api/template/template_window.hpp.sq
@@ -47,6 +47,8 @@ namespace SQConvert {
@@ -40223,7 +40280,7 @@ index 5e16b0d54..8357a530f 100644
/* virtual */ inline bool TileBelongsToRailStation(TileIndex tile) const
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
-index 07db05856..946254936 100644
+index 6dd7bb2fd..84721eb87 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -13,6 +13,9 @@
@@ -45739,7 +45796,7 @@ index 4e6d5a7e1..c992b09de 100644
int height;
diff --git a/src/tunnel_map.h b/src/tunnel_map.h
-index e200a1275..73a55e2d5 100644
+index d6f475d05..4234db7ef 100644
--- a/src/tunnel_map.h
+++ b/src/tunnel_map.h
@@ -21,25 +21,42 @@
@@ -45789,7 +45846,7 @@ index e200a1275..73a55e2d5 100644
/**
* Makes a road tunnel entrance
-@@ -48,20 +65,25 @@ bool IsTunnelInWayDir(TileIndex tile, int z, DiagDirection dir);
+@@ -48,21 +65,26 @@ bool IsTunnelInWayDir(TileIndex tile, int z, DiagDirection dir);
* @param d the direction facing out of the tunnel
* @param r the road type used in the tunnel
*/
@@ -45805,12 +45862,14 @@ index e200a1275..73a55e2d5 100644
- _m[t].m5 = TRANSPORT_ROAD << 2 | d;
- SB(_me[t].m6, 2, 4, 0);
- _me[t].m7 = 0;
+- _me[t].m8 = 0;
+ GetTile(t)->m2 = 0;
+ GetTile(t)->m3 = 0;
+ GetTile(t)->m4 = 0;
+ GetTile(t)->m5 = TRANSPORT_ROAD << 2 | d;
+ SB(GetTileEx(t)->m6, 2, 4, 0);
+ GetTileEx(t)->m7 = 0;
++ GetTileEx(t)->m8 = 0;
SetRoadOwner(t, ROADTYPE_ROAD, o);
if (o != OWNER_TOWN) SetRoadOwner(t, ROADTYPE_TRAM, o);
SetRoadTypes(t, r);
@@ -45822,7 +45881,7 @@ index e200a1275..73a55e2d5 100644
/**
* Makes a rail tunnel entrance
-@@ -70,16 +92,21 @@ static inline void MakeRoadTunnel(TileIndex t, Owner o, DiagDirection d, RoadTyp
+@@ -71,17 +93,22 @@ static inline void MakeRoadTunnel(TileIndex t, Owner o, DiagDirection d, RoadTyp
* @param d the direction facing out of the tunnel
* @param r the rail type used in the tunnel
*/
@@ -45833,17 +45892,19 @@ index e200a1275..73a55e2d5 100644
SetTileType(t, MP_TUNNELBRIDGE);
SetTileOwner(t, o);
- _m[t].m2 = 0;
-- _m[t].m3 = r;
+- _m[t].m3 = 0;
- _m[t].m4 = 0;
- _m[t].m5 = TRANSPORT_RAIL << 2 | d;
- SB(_me[t].m6, 2, 4, 0);
- _me[t].m7 = 0;
+- _me[t].m8 = r;
+ GetTile(t)->m2 = 0;
-+ GetTile(t)->m3 = r;
++ GetTile(t)->m3 = 0;
+ GetTile(t)->m4 = 0;
+ GetTile(t)->m5 = TRANSPORT_RAIL << 2 | d;
+ SB(GetTileEx(t)->m6, 2, 4, 0);
+ GetTileEx(t)->m7 = 0;
++ GetTileEx(t)->m8 = r;
}
+/** @copydoc MakeRailTunnel(TileIndexT<Tgeneric>::T,Owner,DiagDirection,RailType) */
+static inline void MakeRailTunnel(TileIndex t, Owner o, DiagDirection d, RailType r) { MakeRailTunnel<false>(t, o, d, r); }
@@ -45877,7 +45938,7 @@ index 0a2c2293d..9e46c3ea8 100644
extern TileIndex _build_tunnel_endtile;
diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp
-index 9ba9b26e3..9f4b59eb1 100644
+index ce14188fd..365d0884a 100644
--- a/src/tunnelbridge_cmd.cpp
+++ b/src/tunnelbridge_cmd.cpp
@@ -17,6 +17,7 @@
@@ -45953,7 +46014,7 @@ index 9ba9b26e3..9f4b59eb1 100644
bool is_new_owner;
@@ -576,7 +603,7 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
* @param flags type of operation
- * @param p1 bit 0-3 railtype or roadtypes
+ * @param p1 bit 0-5 railtype or roadtypes
* bit 8-9 transport type
- * @param p2 unused
+ * @param p2 the end tile (only if DC_PASTE flags is set)
@@ -45969,7 +46030,7 @@ index 9ba9b26e3..9f4b59eb1 100644
+
switch (transport_type) {
case TRANSPORT_RAIL:
- railtype = Extract<RailType, 0, 4>(p1);
+ railtype = Extract<RailType, 0, 6>(p1);
@@ -597,7 +627,7 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, DoCommandFlag flags, uint32 p1,
case TRANSPORT_ROAD:
@@ -46129,7 +46190,7 @@ index 9ba9b26e3..9f4b59eb1 100644
ret = DoCommand(end_tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
if (ret.Failed()) return_cmd_error(STR_ERROR_UNABLE_TO_EXCAVATE_LAND);
cost.AddCost(ret);
-@@ -710,7 +814,7 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, DoCommandFlag flags, uint32 p1,
+@@ -724,7 +828,7 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, DoCommandFlag flags, uint32 p1,
/* Pay for the rail/road in the tunnel including entrances */
switch (transport_type) {
@@ -46138,7 +46199,7 @@ index 9ba9b26e3..9f4b59eb1 100644
case TRANSPORT_RAIL: cost.AddCost((tiles + 2) * RailBuildCost(railtype)); break;
default: NOT_REACHED();
}
-@@ -1125,6 +1229,103 @@ static void DrawBridgeTramBits(int x, int y, int z, int offset, bool overlay, bo
+@@ -1139,6 +1243,103 @@ static void DrawBridgeTramBits(int x, int y, int z, int offset, bool overlay, bo
}
}
@@ -46242,7 +46303,7 @@ index 9ba9b26e3..9f4b59eb1 100644
/**
* Draws a tunnel of bridge tile.
* For tunnels, this is rather simple, as you only need to draw the entrance.
-@@ -1206,6 +1407,8 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
+@@ -1220,6 +1421,8 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
if (surface != 0) DrawGroundSprite(surface + tunnelbridge_direction, PAL_NONE);
}
@@ -46251,7 +46312,7 @@ index 9ba9b26e3..9f4b59eb1 100644
/* PBS debugging, draw reserved tracks darker */
if (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation && HasTunnelBridgeReservation(ti->tile)) {
if (rti->UsesOverlay()) {
-@@ -1239,6 +1442,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
+@@ -1253,6 +1456,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);
@@ -46261,7 +46322,7 @@ index 9ba9b26e3..9f4b59eb1 100644
DrawBridgeMiddle(ti);
} else { // IsBridge(ti->tile)
const PalSpriteID *psid;
-@@ -1346,6 +1552,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
+@@ -1360,6 +1566,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
}
}
@@ -46271,7 +46332,7 @@ index 9ba9b26e3..9f4b59eb1 100644
DrawBridgeMiddle(ti);
}
}
-@@ -1494,6 +1703,9 @@ void DrawBridgeMiddle(const TileInfo *ti)
+@@ -1508,6 +1717,9 @@ void DrawBridgeMiddle(const TileInfo *ti)
if (HasRailCatenaryDrawn(GetRailType(rampsouth))) {
DrawRailCatenaryOnBridge(ti);
}
@@ -46281,7 +46342,7 @@ index 9ba9b26e3..9f4b59eb1 100644
}
/* draw roof, the component of the bridge which is logically between the vehicle and the camera */
-@@ -1582,9 +1794,9 @@ static void GetTileDesc_TunnelBridge(TileIndex tile, TileDesc *td)
+@@ -1596,9 +1808,9 @@ static void GetTileDesc_TunnelBridge(TileIndex tile, TileDesc *td)
TransportType tt = GetTunnelBridgeTransportType(tile);
if (IsTunnel(tile)) {
@@ -46294,7 +46355,7 @@ index 9ba9b26e3..9f4b59eb1 100644
}
td->owner[0] = GetTileOwner(tile);
-@@ -1654,6 +1866,26 @@ static void TileLoop_TunnelBridge(TileIndex tile)
+@@ -1668,6 +1880,26 @@ static void TileLoop_TunnelBridge(TileIndex tile)
}
}
@@ -46321,7 +46382,7 @@ index 9ba9b26e3..9f4b59eb1 100644
static TrackStatus GetTileTrackStatus_TunnelBridge(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
TransportType transport_type = GetTunnelBridgeTransportType(tile);
-@@ -1899,6 +2131,178 @@ static CommandCost TerraformTile_TunnelBridge(TileIndex tile, DoCommandFlag flag
+@@ -1913,6 +2145,178 @@ static CommandCost TerraformTile_TunnelBridge(TileIndex tile, DoCommandFlag flag
return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
}
@@ -46500,7 +46561,7 @@ index 9ba9b26e3..9f4b59eb1 100644
extern const TileTypeProcs _tile_type_tunnelbridge_procs = {
DrawTile_TunnelBridge, // draw_tile_proc
GetSlopePixelZ_TunnelBridge, // get_slope_z_proc
-@@ -1906,7 +2310,7 @@ extern const TileTypeProcs _tile_type_tunnelbridge_procs = {
+@@ -1920,7 +2324,7 @@ extern const TileTypeProcs _tile_type_tunnelbridge_procs = {
NULL, // add_accepted_cargo_proc
GetTileDesc_TunnelBridge, // get_tile_desc_proc
GetTileTrackStatus_TunnelBridge, // get_tile_track_status_proc
@@ -46509,7 +46570,7 @@ index 9ba9b26e3..9f4b59eb1 100644
NULL, // animate_tile_proc
TileLoop_TunnelBridge, // tile_loop_proc
ChangeTileOwner_TunnelBridge, // change_tile_owner_proc
-@@ -1914,4 +2318,5 @@ extern const TileTypeProcs _tile_type_tunnelbridge_procs = {
+@@ -1928,4 +2332,5 @@ extern const TileTypeProcs _tile_type_tunnelbridge_procs = {
VehicleEnter_TunnelBridge, // vehicle_enter_tile_proc
GetFoundation_TunnelBridge, // get_foundation_proc
TerraformTile_TunnelBridge, // terraform_tile_proc