diff options
author | Erich Eckner <git@eckner.net> | 2022-01-16 22:27:24 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2022-01-16 22:27:24 +0100 |
commit | 085e66127382439b86c98453fdbc5d475911682b (patch) | |
tree | 9d836a92c2afe556c98dd199408751b773ca0b6d /manualPorts | |
parent | ed4a2fd51968f77f7dc831a26ee9b16e7f9f4b53 (diff) | |
download | crux-ports-085e66127382439b86c98453fdbc5d475911682b.tar.xz |
openttd-git: 31319.ad89601c4 -> 31392.523901887
Diffstat (limited to 'manualPorts')
-rw-r--r-- | manualPorts/openttd-git/.footprint | 1 | ||||
-rw-r--r-- | manualPorts/openttd-git/.md5sum | 7 | ||||
-rw-r--r-- | manualPorts/openttd-git/.signature | 13 | ||||
-rw-r--r-- | manualPorts/openttd-git/Pkgfile | 6 | ||||
-rw-r--r-- | manualPorts/openttd-git/signaltunnel.patch | 86 | ||||
-rw-r--r-- | manualPorts/openttd-git/sloped-stations.patch | 81 | ||||
-rw-r--r-- | manualPorts/openttd-git/underground.patch | 442 |
7 files changed, 315 insertions, 321 deletions
diff --git a/manualPorts/openttd-git/.footprint b/manualPorts/openttd-git/.footprint index 8df2ee2..3f4d6bd 100644 --- a/manualPorts/openttd-git/.footprint +++ b/manualPorts/openttd-git/.footprint @@ -31,6 +31,7 @@ drwxr-xr-x root/root usr/share/games/openttd/ai/ drwxr-xr-x root/root usr/share/games/openttd/baseset/ -rw-r--r-- root/root usr/share/games/openttd/baseset/no_music.obm -rw-r--r-- root/root usr/share/games/openttd/baseset/no_sound.obs +-rw-r--r-- root/root usr/share/games/openttd/baseset/openttd.32.bmp -rw-r--r-- root/root usr/share/games/openttd/baseset/openttd.grf -rw-r--r-- root/root usr/share/games/openttd/baseset/opntitle.dat -rw-r--r-- root/root usr/share/games/openttd/baseset/orig_dos.obg diff --git a/manualPorts/openttd-git/.md5sum b/manualPorts/openttd-git/.md5sum index 051ae1e..03b3123 100644 --- a/manualPorts/openttd-git/.md5sum +++ b/manualPorts/openttd-git/.md5sum @@ -1,8 +1,7 @@ -e97c19b8b63f40a7f2c095d5157ef332 ad89601c4.tar.gz +04c7d46c47351187f77ed6c72ffd095f 523901887.tar.gz 4f4a6465cd5b84964b7ceecd1c06d686 opengfx-0.5.4.zip 858b79d44aea6de5e15d9d1439e86cc3 openmsx-0.3.1.zip 6e3a5cf97fe69e3a351c3e0615a14b04 opensfx-0.2.3.zip 00fd6afd1ab1bfbd8d775175a42c3899 opntitle.dat -dc7532dc6cccbe8b25d55c176dafa7bb signaltunnel.patch -cb572f46fc8c53fb08d7fe3de94870bc sloped-stations.patch -099be2bc8d019cd66c2ff54948a2fad0 underground.patch +f5fa1fd3ad99eea4e7e340b930e98026 signaltunnel.patch +d0a6576302e054dd8134b4ceb601a8c3 sloped-stations.patch diff --git a/manualPorts/openttd-git/.signature b/manualPorts/openttd-git/.signature index b78c972..edacd34 100644 --- a/manualPorts/openttd-git/.signature +++ b/manualPorts/openttd-git/.signature @@ -1,12 +1,11 @@ untrusted comment: verify with /etc/ports/deepthought.pub -RWQxCptPusLGGhYTeiyu0/mzg1jL9NtyCr/vjR2w/aadB3RNkJPrO0T226PrVbyvqmLIoRdLjl0Ie3WMFkbdWH7enfhS+T+mdgQ= -SHA256 (Pkgfile) = de02ff9220d4a8b0e6decc6281c5c41d5e28fea32d56187c8c7a8d7d4a8425c3 -SHA256 (.footprint) = 2950465990b1e14b5c788bae2b920401e880c096349c23e7ed584814f43c0192 +RWQxCptPusLGGo+x2FS1Xe0OFq532z45ibSqsXpBH5gNM1VKL2MAhH5WqY3JRR/cHIzTizpRGbvK98VfOu3kMINYM6YReqxHog8= +SHA256 (Pkgfile) = 29561ebe7f808415a65a0c973058af4ca20f40877c3a731be7e2f7efaa8b9930 +SHA256 (.footprint) = e1b2d06dbbe8992ddb7dac426b3873fc47f207f240abb356376c8a998dda7f37 SHA256 (opengfx-0.5.4.zip) = 3d136d776906dbe8b5df1434cb9a68d1249511a3c4cfaca55cc24cc0028ae078 SHA256 (opensfx-0.2.3.zip) = 3574745ac0c138bae53b56972591db8d778ad9faffd51deae37a48a563e71662 SHA256 (openmsx-0.3.1.zip) = 92e293ae89f13ad679f43185e83fb81fb8cad47fe63f4af3d3d9f955130460f5 -SHA256 (signaltunnel.patch) = 11065bb6812413b05932213f7282b64b434017e3006998410464abf1161ff84f -SHA256 (sloped-stations.patch) = d616130467b7341531efce1883e9fb2bd0619a9cf45265c7ee2127d0cde5266b -SHA256 (underground.patch) = 3443cb4f9970e2957e2bdf5e2b1bb606791f6827f4f6147c6b483ca317fda802 +SHA256 (signaltunnel.patch) = 5fa6024423f92431606fdd772214c686455dabb3f1d2f3ed46df6acf0ea98f65 +SHA256 (sloped-stations.patch) = 17e70cc25398eb6a4369635ae515c050d36e21131ceaae7ab2df1f75b19de35a SHA256 (opntitle.dat) = f4931200a68a6f592716ec2dce468530670484dd357ab52c3a2272b9db3dfd95 -SHA256 (ad89601c4.tar.gz) = b5fbcce769c641da42a2061ee85361a6687ee0c0704e220d7a07c29bd037879e +SHA256 (523901887.tar.gz) = e911d5af6cc7ef19c3bb7fa6dcd1452c225e86d733cb5ca3ae205aacb5e3980f diff --git a/manualPorts/openttd-git/Pkgfile b/manualPorts/openttd-git/Pkgfile index cb2222d..50095c3 100644 --- a/manualPorts/openttd-git/Pkgfile +++ b/manualPorts/openttd-git/Pkgfile @@ -5,7 +5,7 @@ # Depends on: libsdl libpng fontconfig lzo name=openttd-git -version=31319.ad89601c4 +version=31392.523901887 gfxversion=0.5.4 sfxversion=0.2.3 @@ -19,7 +19,7 @@ source=(http://bundles.openttdcoop.org/opengfx/releases/$gfxversion/opengfx-$gfx # chunnel-underground-pre.patch signaltunnel.patch sloped-stations.patch - underground.patch +# underground.patch opntitle.dat https://github.com/OpenTTD/OpenTTD/archive/${version##*.}.tar.gz) @@ -50,7 +50,7 @@ build() { ' cmake/scripts/FindVersion.cmake patch -p1 -i "$SRC/signaltunnel.patch" # patch -p1 -i "$SRC/sloped-stations.patch" # broken! - patch -p1 -i "$SRC/underground.patch" # broken? +# patch -p1 -i "$SRC/underground.patch" # broken? # patch -p1 -i "$SRC/chunnel.pre.patch" # broken! mkdir build diff --git a/manualPorts/openttd-git/signaltunnel.patch b/manualPorts/openttd-git/signaltunnel.patch index 65a4395..d3483e8 100644 --- a/manualPorts/openttd-git/signaltunnel.patch +++ b/manualPorts/openttd-git/signaltunnel.patch @@ -1,5 +1,5 @@ diff --git a/src/lang/english.txt b/src/lang/english.txt -index becf8d35c..8645b5cd1 100644 +index becf8d35c2..8645b5cd15 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1812,6 +1812,9 @@ STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Set the minimum @@ -24,7 +24,7 @@ index becf8d35c..8645b5cd1 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 534be43c1..658e41ca2 100644 +index 534be43c18..658e41ca28 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1963,6 +1963,8 @@ STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Минимал @@ -48,7 +48,7 @@ index 534be43c1..658e41ca2 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 a9a51da68..5558c0226 100644 +index a9a51da68a..5558c02265 100644 --- a/src/pathfinder/follow_track.hpp +++ b/src/pathfinder/follow_track.hpp @@ -350,7 +350,7 @@ protected: @@ -70,12 +70,12 @@ index a9a51da68..5558c0226 100644 return false; } diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp -index 4c34f1ca8..e71f562ac 100644 +index 88f4adb0f6..7503464dba 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp -@@ -1069,9 +1069,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; +@@ -1039,9 +1039,12 @@ CommandCost CmdBuildSingleSignal(DoCommandFlag flags, TileIndex tile, Track trac + + if (ctrl_pressed) sigvar = (SignalVariant)(sigvar ^ SIG_SEMAPHORE); - /* You can only build signals on plain rail tiles, and the selected track must exist */ - if (!ValParamTrackOrientation(track) || !IsPlainRailTile(tile) || @@ -89,7 +89,7 @@ index 4c34f1ca8..e71f562ac 100644 return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); } /* Protect against invalid signal copying */ -@@ -1080,6 +1083,53 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, +@@ -1050,6 +1053,53 @@ CommandCost CmdBuildSingleSignal(DoCommandFlag flags, TileIndex tile, Track trac CommandCost ret = CheckTileOwnership(tile); if (ret.Failed()) return ret; @@ -99,10 +99,10 @@ index 4c34f1ca8..e71f562ac 100644 + TileIndex tile_exit = GetOtherTunnelBridgeEnd(tile); + cost = CommandCost(); + if (!HasWormholeSignals(tile)) { // toggle signal zero costs. -+ if (p2 != 12) cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS] * ((GetTunnelBridgeLength(tile, tile_exit) + 4) >> 2)); // minimal 1 ++ if (signals_copy != 12) cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS] * ((GetTunnelBridgeLength(tile, tile_exit) + 4) >> 2)); // minimal 1 + } + if (flags & DC_EXEC) { -+ if (p2 == 0 && HasWormholeSignals(tile)){ // Toggle signal if already signals present. ++ if (signals_copy == 0 && HasWormholeSignals(tile)){ // Toggle signal if already signals present. + if (IsTunnelBridgeEntrance (tile)) { + ClrBitTunnelBridgeSignal(tile); + ClrBitTunnelBridgeExit(tile_exit); @@ -116,14 +116,14 @@ index 4c34f1ca8..e71f562ac 100644 + } + } else{ + /* Create one direction tunnel/bridge if required. */ -+ if (p2 == 0) { ++ if (signals_copy == 0) { + SetBitTunnelBridgeSignal(tile); + SetBitTunnelBridgeExit(tile_exit); -+ } else if (p2 == 4 || p2 == 8) { ++ } else if (signals_copy == 4 || signals_copy == 8) { + DiagDirection tbdir = GetTunnelBridgeDirection(tile); + /* If signal only on one side build accoringly one-way tunnel/bridge. */ -+ if ((p2 == 8 && (tbdir == DIAGDIR_NE || tbdir == DIAGDIR_SE)) || -+ (p2 == 4 && (tbdir == DIAGDIR_SW || tbdir == DIAGDIR_NW))) { ++ if ((signals_copy == 8 && (tbdir == DIAGDIR_NE || tbdir == DIAGDIR_SE)) || ++ (signals_copy == 4 && (tbdir == DIAGDIR_SW || tbdir == DIAGDIR_NW))) { + SetBitTunnelBridgeSignal(tile); + SetBitTunnelBridgeExit(tile_exit); + } else { @@ -143,7 +143,7 @@ index 4c34f1ca8..e71f562ac 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); -@@ -1089,7 +1139,6 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, +@@ -1059,7 +1109,6 @@ CommandCost CmdBuildSingleSignal(DoCommandFlag flags, TileIndex tile, Track trac /* 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); @@ -151,7 +151,7 @@ index 4c34f1ca8..e71f562ac 100644 if (!HasSignalOnTrack(tile, track)) { /* build new signals */ cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS]); -@@ -1243,6 +1292,7 @@ static bool AdvanceSignalAutoFill(TileIndex &tile, Trackdir &trackdir, bool remo +@@ -1213,6 +1262,7 @@ static bool AdvanceSignalAutoFill(TileIndex &tile, Trackdir &trackdir, bool remo break; case MP_TUNNELBRIDGE: { @@ -159,17 +159,17 @@ index 4c34f1ca8..e71f562ac 100644 if (GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) return false; if (GetTunnelBridgeDirection(tile) != TrackdirToExitdir(trackdir)) return false; break; -@@ -1501,22 +1551,48 @@ CommandCost CmdBuildSignalTrack(TileIndex tile, DoCommandFlag flags, uint32 p1, - CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const std::string &text) +@@ -1443,21 +1493,48 @@ CommandCost CmdBuildSignalTrack(DoCommandFlag flags, TileIndex tile, TileIndex e + */ + CommandCost CmdRemoveSingleSignal(DoCommandFlag flags, TileIndex tile, Track track) { - Track track = Extract<Track, 0, 3>(p1); -+ Money cost = _price[PR_CLEAR_SIGNALS]; - - if (!ValParamTrackOrientation(track) || !IsPlainRailTile(tile) || !HasTrack(tile, track)) { - return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); - } - if (!HasSignalOnTrack(tile, track)) { - return_cmd_error(STR_ERROR_THERE_ARE_NO_SIGNALS); ++ Money cost = _price[PR_CLEAR_SIGNALS]; ++ + if (IsTileType(tile, MP_TUNNELBRIDGE)) { + TileIndex end = GetOtherTunnelBridgeEnd(tile); + if (GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); @@ -215,7 +215,7 @@ index 4c34f1ca8..e71f562ac 100644 Train *v = nullptr; if (HasReservedTracks(tile, TrackToTrackBits(track))) { v = GetTrainForReservation(tile, track); -@@ -1552,7 +1628,7 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1 +@@ -1493,7 +1570,7 @@ CommandCost CmdRemoveSingleSignal(DoCommandFlag flags, TileIndex tile, Track tra MarkTileDirtyByTile(tile); } @@ -225,7 +225,7 @@ index 4c34f1ca8..e71f562ac 100644 /** diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp -index f99ef8f3e..a913884da 100644 +index f99ef8f3e2..a913884da4 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1625,6 +1625,7 @@ static SettingsContainer &GetSettingsTree() @@ -237,7 +237,7 @@ index f99ef8f3e..a913884da 100644 construction->Add(new SettingEntry("gui.quick_goto")); construction->Add(new SettingEntry("gui.default_rail_type")); diff --git a/src/settings_type.h b/src/settings_type.h -index 9da2655d6..d37f5e18d 100644 +index 9da2655d6b..d37f5e18d2 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -345,6 +345,7 @@ struct ConstructionSettings { @@ -249,7 +249,7 @@ index 9da2655d6..d37f5e18d 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 329b1b05d..e058edf5e 100644 +index 329b1b05d9..e058edf5e2 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -195,6 +195,14 @@ static Vehicle *TrainOnTileEnum(Vehicle *v, void *) @@ -330,7 +330,7 @@ index 329b1b05d..e058edf5e 100644 case MP_RAILWAY: diff --git a/src/table/settings/game_settings.ini b/src/table/settings/game_settings.ini -index 79fac7513..503863c96 100644 +index 79fac75136..503863c969 100644 --- a/src/table/settings/game_settings.ini +++ b/src/table/settings/game_settings.ini @@ -406,6 +406,20 @@ min = 5 @@ -355,10 +355,10 @@ index 79fac7513..503863c96 100644 [SDTC_BOOL] diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp -index f5eb32d7f..5b9830b02 100644 +index 2fd081898e..ff143dd879 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp -@@ -1876,6 +1876,17 @@ void ReverseTrainDirection(Train *v) +@@ -1866,6 +1866,17 @@ void ReverseTrainDirection(Train *v) return; } @@ -376,7 +376,7 @@ index f5eb32d7f..5b9830b02 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); -@@ -2210,6 +2221,42 @@ static bool CheckTrainStayInDepot(Train *v) +@@ -2195,6 +2206,42 @@ static bool CheckTrainStayInDepot(Train *v) return false; } @@ -419,7 +419,7 @@ index f5eb32d7f..5b9830b02 100644 /** * Clear the reservation of \a tile that was just left by a wagon on \a track_dir. * @param v %Train owning the reservation. -@@ -2225,7 +2272,8 @@ static void ClearPathReservation(const Train *v, TileIndex tile, Trackdir track_ +@@ -2210,7 +2257,8 @@ static void ClearPathReservation(const Train *v, TileIndex tile, Trackdir track_ if (GetTunnelBridgeDirection(tile) == ReverseDiagDir(dir)) { TileIndex end = GetOtherTunnelBridgeEnd(tile); @@ -429,7 +429,7 @@ index f5eb32d7f..5b9830b02 100644 /* Free the reservation only if no other train is on the tiles. */ SetTunnelBridgeReservation(tile, false); SetTunnelBridgeReservation(end, false); -@@ -2239,6 +2287,7 @@ static void ClearPathReservation(const Train *v, TileIndex tile, Trackdir track_ +@@ -2224,6 +2272,7 @@ static void ClearPathReservation(const Train *v, TileIndex tile, Trackdir track_ } } } @@ -437,7 +437,7 @@ index f5eb32d7f..5b9830b02 100644 } } else if (IsRailStationTile(tile)) { TileIndex new_tile = TileAddByDiagDir(tile, dir); -@@ -3105,6 +3154,99 @@ static Vehicle *CheckTrainAtSignal(Vehicle *v, void *data) +@@ -3090,6 +3139,99 @@ static Vehicle *CheckTrainAtSignal(Vehicle *v, void *data) return t; } @@ -537,7 +537,7 @@ index f5eb32d7f..5b9830b02 100644 /** * Move a vehicle chain one movement stop forwards. * @param v First vehicle to move. -@@ -3290,6 +3432,23 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) +@@ -3275,6 +3417,23 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) goto invalid_rail; } @@ -561,7 +561,7 @@ index f5eb32d7f..5b9830b02 100644 if (!HasBit(r, VETS_ENTERED_WORMHOLE)) { Track track = FindFirstTrack(chosen_track); Trackdir tdir = TrackDirectionToTrackdir(track, chosen_dir); -@@ -3342,6 +3501,64 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) +@@ -3327,6 +3486,64 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) } } } else { @@ -627,7 +627,7 @@ index f5eb32d7f..5b9830b02 100644 /* Perform look-ahead on tunnel exit. */ if (v->IsFrontEngine()) { diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp -index 5181dfdca..e9df7e23b 100644 +index 543ac8b284..550becea91 100644 --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -28,6 +28,7 @@ @@ -638,7 +638,7 @@ index 5181dfdca..e9df7e23b 100644 #include "sound_func.h" #include "tunnelbridge.h" #include "cheat_type.h" -@@ -1259,6 +1260,103 @@ static void DrawBridgeRoadBits(TileIndex head_tile, int x, int y, int z, int off +@@ -1250,6 +1251,103 @@ static void DrawBridgeRoadBits(TileIndex head_tile, int x, int y, int z, int off } } @@ -742,7 +742,7 @@ index 5181dfdca..e9df7e23b 100644 /** * Draws a tunnel of bridge tile. * For tunnels, this is rather simple, as you only need to draw the entrance. -@@ -1390,6 +1488,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti) +@@ -1381,6 +1479,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); @@ -752,7 +752,7 @@ index 5181dfdca..e9df7e23b 100644 DrawBridgeMiddle(ti); } else { // IsBridge(ti->tile) const PalSpriteID *psid; -@@ -1495,6 +1596,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti) +@@ -1486,6 +1587,9 @@ static void DrawTile_TunnelBridge(TileInfo *ti) } } @@ -762,7 +762,7 @@ index 5181dfdca..e9df7e23b 100644 DrawBridgeMiddle(ti); } } -@@ -1636,6 +1740,9 @@ void DrawBridgeMiddle(const TileInfo *ti) +@@ -1627,6 +1731,9 @@ void DrawBridgeMiddle(const TileInfo *ti) if (HasRailCatenaryDrawn(GetRailType(rampsouth))) { DrawRailCatenaryOnBridge(ti); } @@ -772,7 +772,7 @@ index 5181dfdca..e9df7e23b 100644 } /* draw roof, the component of the bridge which is logically between the vehicle and the camera */ -@@ -1709,9 +1816,9 @@ static void GetTileDesc_TunnelBridge(TileIndex tile, TileDesc *td) +@@ -1700,9 +1807,9 @@ static void GetTileDesc_TunnelBridge(TileIndex tile, TileDesc *td) TransportType tt = GetTunnelBridgeTransportType(tile); if (IsTunnel(tile)) { @@ -784,7 +784,7 @@ index 5181dfdca..e9df7e23b 100644 } td->owner[0] = GetTileOwner(tile); -@@ -1794,6 +1901,25 @@ static void TileLoop_TunnelBridge(TileIndex tile) +@@ -1785,6 +1892,25 @@ static void TileLoop_TunnelBridge(TileIndex tile) } } @@ -810,7 +810,7 @@ index 5181dfdca..e9df7e23b 100644 static TrackStatus GetTileTrackStatus_TunnelBridge(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) { TransportType transport_type = GetTunnelBridgeTransportType(tile); -@@ -2047,8 +2173,8 @@ extern const TileTypeProcs _tile_type_tunnelbridge_procs = { +@@ -2038,8 +2164,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 @@ -822,7 +822,7 @@ index 5181dfdca..e9df7e23b 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 62d3c14b2..fa029dcf4 100644 +index 62d3c14b2d..fa029dcf4d 100644 --- a/src/tunnelbridge_map.h +++ b/src/tunnelbridge_map.h @@ -119,4 +119,98 @@ static inline TrackBits GetTunnelBridgeReservationTrackBits(TileIndex t) diff --git a/manualPorts/openttd-git/sloped-stations.patch b/manualPorts/openttd-git/sloped-stations.patch index b113d84..9fbd520 100644 --- a/manualPorts/openttd-git/sloped-stations.patch +++ b/manualPorts/openttd-git/sloped-stations.patch @@ -1,8 +1,8 @@ diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp -index 4c34f1ca8..4100ae31d 100644 +index 88f4adb0f6..26a952f80f 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp -@@ -187,14 +187,6 @@ RailType AllocateRailType(RailTypeLabel label) +@@ -189,14 +189,6 @@ RailType AllocateRailType(RailTypeLabel label) return INVALID_RAILTYPE; } @@ -18,18 +18,10 @@ index 4c34f1ca8..4100ae31d 100644 * --------- * |\ /| diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp -index 70a014434..a72ff4eb7 100644 +index 0701481119..9ada2017a1 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp -@@ -37,6 +37,7 @@ - #include "genworld.h" - #include "company_gui.h" - #include "road_func.h" -+#include "road_cmd.h" - - #include "table/strings.h" - #include "table/roadtypes.h" -@@ -251,8 +252,6 @@ static const RoadBits _invalid_tileh_slopes_road[2][15] = { +@@ -254,8 +254,6 @@ static const RoadBits _invalid_tileh_slopes_road[2][15] = { } }; @@ -38,7 +30,7 @@ index 70a014434..a72ff4eb7 100644 /** * Is it allowed to remove the given road bits from the given tile? * @param tile the tile to remove the road from -@@ -1296,7 +1295,7 @@ struct DrawRoadTileStruct { +@@ -1268,7 +1266,7 @@ struct DrawRoadTileStruct { * @param bits The RoadBits part * @return The resulting Foundation */ @@ -47,7 +39,7 @@ index 70a014434..a72ff4eb7 100644 { /* Flat land and land without a road doesn't require a foundation */ if (tileh == SLOPE_FLAT || bits == ROAD_NONE) return FOUNDATION_NONE; -@@ -1318,13 +1317,6 @@ static Foundation GetRoadFoundation(Slope tileh, RoadBits bits) +@@ -1290,13 +1288,6 @@ static Foundation GetRoadFoundation(Slope tileh, RoadBits bits) return (bits == ROAD_X ? FOUNDATION_INCLINED_X : FOUNDATION_INCLINED_Y); } @@ -62,28 +54,31 @@ index 70a014434..a72ff4eb7 100644 * Get the sprite offset within a spritegroup. * @param slope Slope diff --git a/src/road_cmd.h b/src/road_cmd.h -index 753ebd21d..87dee9722 100644 +index 82f09d2fa9..431f0c20fc 100644 --- a/src/road_cmd.h +++ b/src/road_cmd.h -@@ -12,8 +12,11 @@ - +@@ -13,6 +13,7 @@ #include "direction_type.h" #include "road_type.h" + #include "command_type.h" +#include "slope_type.h" void DrawRoadDepotSprite(int x, int y, DiagDirection dir, RoadType rt); void UpdateNearestTownForRoadTiles(bool invalidate); +@@ -34,4 +35,6 @@ CommandCallback CcBuildRoadTunnel; + void CcRoadDepot(Commands cmd, const CommandCost &result, TileIndex tile, RoadType rt, DiagDirection dir); + void CcRoadStop(Commands cmd, const CommandCost &result, TileIndex tile, uint8 width, uint8 length, RoadStopType, bool is_drive_through, DiagDirection dir, RoadType, StationID, bool); +Foundation GetRoadFoundation(Slope tileh, RoadBits bits); + #endif /* ROAD_CMD_H */ diff --git a/src/road_type.h b/src/road_type.h -index 969b141ba..1af4275eb 100644 +index a792db7ba5..24dde2abbf 100644 --- a/src/road_type.h +++ b/src/road_type.h -@@ -68,4 +68,11 @@ enum RoadBits { - DECLARE_ENUM_AS_BIT_SET(RoadBits) - template <> struct EnumPropsT<RoadBits> : MakeEnumPropsT<RoadBits, byte, ROAD_NONE, ROAD_END, ROAD_NONE, 4> {}; +@@ -80,4 +80,11 @@ DECLARE_ENUM_AS_BIT_SET(DisallowedRoadDirections) + /** Helper information for extract tool. */ + template <> struct EnumPropsT<DisallowedRoadDirections> : MakeEnumPropsT<DisallowedRoadDirections, byte, DRD_NONE, DRD_END, DRD_END, 2> {}; +const byte _road_sloped_sprites[14] = { + 0, 0, 2, 0, @@ -94,10 +89,10 @@ index 969b141ba..1af4275eb 100644 + #endif /* ROAD_TYPE_H */ diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp -index 9c444d1d3..a83e7fda9 100644 +index 27900a2c8e..8867c969b6 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp -@@ -1511,7 +1511,7 @@ again: +@@ -1508,7 +1508,7 @@ again: v->x_pos = x; v->y_pos = y; v->UpdatePosition(); @@ -107,18 +102,18 @@ index 9c444d1d3..a83e7fda9 100644 } } diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp -index 1a188252c..9304f5efc 100644 +index 5a91fa4742..5d3501761b 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp -@@ -56,6 +56,7 @@ - #include "linkgraph/refresh.h" - #include "widgets/station_widget.h" - #include "tunnelbridge_map.h" +@@ -60,6 +60,7 @@ + #include "waypoint_cmd.h" + #include "landscape_cmd.h" + #include "rail_cmd.h" +#include "road_cmd.h" #include "table/strings.h" -@@ -776,7 +777,7 @@ CommandCost ClearTile_Station(TileIndex tile, DoCommandFlag flags); +@@ -780,7 +781,7 @@ CommandCost ClearTile_Station(TileIndex tile, DoCommandFlag flags); * Checks if the given tile is buildable, flat and has a certain height. * @param tile TileIndex to check. * @param invalid_dirs Prohibited directions for slopes (set of #DiagDirection). @@ -127,7 +122,7 @@ index 1a188252c..9304f5efc 100644 * @param allow_steep Whether steep slopes are allowed. * @param check_bridge Check for the existence of a bridge. * @return The cost in case of success, or an error code if it failed. -@@ -815,10 +816,10 @@ CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z +@@ -819,10 +820,10 @@ CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z } /* The level of this tile must be equal to allowed_z. */ @@ -140,7 +135,7 @@ index 1a188252c..9304f5efc 100644 return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED); } -@@ -866,14 +867,14 @@ static CommandCost CheckFlatLandAirport(AirportTileTableIterator tile_iter, DoCo +@@ -870,14 +871,14 @@ static CommandCost CheckFlatLandAirport(AirportTileTableIterator tile_iter, DoCo static CommandCost CheckFlatLandRailStation(TileArea tile_area, DoCommandFlag flags, Axis axis, StationID *station, RailType rt, std::vector<Train *> &affected_vehicles, StationClassID spec_class, byte spec_index, byte plat_len, byte numtracks) { CommandCost cost(EXPENSES_CONSTRUCTION); @@ -157,7 +152,7 @@ index 1a188252c..9304f5efc 100644 if (ret.Failed()) return ret; cost.AddCost(ret); -@@ -952,10 +953,10 @@ static CommandCost CheckFlatLandRailStation(TileArea tile_area, DoCommandFlag fl +@@ -956,10 +957,10 @@ static CommandCost CheckFlatLandRailStation(TileArea tile_area, DoCommandFlag fl static CommandCost CheckFlatLandRoadStop(TileArea tile_area, DoCommandFlag flags, uint invalid_dirs, bool is_drive_through, bool is_truck_stop, Axis axis, StationID *station, RoadType rt) { CommandCost cost(EXPENSES_CONSTRUCTION); @@ -170,16 +165,16 @@ index 1a188252c..9304f5efc 100644 if (ret.Failed()) return ret; cost.AddCost(ret); -@@ -1878,7 +1879,7 @@ CommandCost CmdBuildRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, uin +@@ -1847,7 +1848,7 @@ CommandCost CmdBuildRoadStop(DoCommandFlag flags, TileIndex tile, uint8 width, u /* Total road stop cost. */ - CommandCost cost(EXPENSES_CONSTRUCTION, roadstop_area.w * roadstop_area.h * _price[type ? PR_BUILD_STATION_TRUCK : PR_BUILD_STATION_BUS]); + CommandCost cost(EXPENSES_CONSTRUCTION, roadstop_area.w * roadstop_area.h * _price[is_truck_stop ? PR_BUILD_STATION_TRUCK : PR_BUILD_STATION_BUS]); StationID est = INVALID_STATION; -- ret = CheckFlatLandRoadStop(roadstop_area, flags, is_drive_through ? 5 << axis : 1 << ddir, is_drive_through, type, axis, &est, rt); -+ ret = CheckFlatLandRoadStop(roadstop_area, flags, is_drive_through ? 0 : 1 << ddir, is_drive_through, type, axis, &est, rt); +- ret = CheckFlatLandRoadStop(roadstop_area, flags, is_drive_through ? 5 << axis : 1 << ddir, is_drive_through, is_truck_stop, axis, &est, rt); ++ ret = CheckFlatLandRoadStop(roadstop_area, flags, is_drive_through ? 0 : 1 << ddir, is_drive_through, is_truck_stop, axis, &est, rt); if (ret.Failed()) return ret; cost.AddCost(ret); -@@ -2895,6 +2896,32 @@ static void DrawTile_Station(TileInfo *ti) +@@ -2849,6 +2850,32 @@ static void DrawTile_Station(TileInfo *ti) palette = PALETTE_TO_GREY; } @@ -212,7 +207,7 @@ index 1a188252c..9304f5efc 100644 if (layout == nullptr && (t == nullptr || t->seq == nullptr)) t = GetStationTileLayout(GetStationType(ti->tile), gfx); /* don't show foundation for docks */ -@@ -2961,10 +2988,10 @@ static void DrawTile_Station(TileInfo *ti) +@@ -2915,10 +2942,10 @@ static void DrawTile_Station(TileInfo *ti) } OffsetGroundSprite(31, 1); @@ -225,7 +220,7 @@ index 1a188252c..9304f5efc 100644 } } -@@ -3019,14 +3046,64 @@ draw_default_foundation: +@@ -2973,14 +3000,64 @@ draw_default_foundation: DrawGroundSprite(overlay + overlay_offset, PALETTE_CRASH); } } else { @@ -293,7 +288,7 @@ index 1a188252c..9304f5efc 100644 } } } -@@ -3120,6 +3197,16 @@ void StationPickerDrawSprite(int x, int y, StationType st, RailType railtype, Ro +@@ -3074,6 +3151,16 @@ void StationPickerDrawSprite(int x, int y, StationType st, RailType railtype, Ro static int GetSlopePixelZ_Station(TileIndex tile, uint x, uint y) { @@ -311,7 +306,7 @@ index 1a188252c..9304f5efc 100644 } diff --git a/src/table/sprites.h b/src/table/sprites.h -index b7bb91020..732a2dae7 100644 +index b7bb910203..732a2dae7d 100644 --- a/src/table/sprites.h +++ b/src/table/sprites.h @@ -266,7 +266,26 @@ static const SpriteID SPR_TRUCK_STOP_DT_Y_W = SPR_ROADSTOP_BASE + 4; @@ -343,7 +338,7 @@ index b7bb91020..732a2dae7 100644 /** Tramway sprites */ static const SpriteID SPR_TRAMWAY_BASE = SPR_ROADSTOP_BASE + ROADSTOP_SPRITE_COUNT; diff --git a/src/table/station_land.h b/src/table/station_land.h -index 53a69e1e2..2b6deecd0 100644 +index 53a69e1e21..2b6deecd0c 100644 --- a/src/table/station_land.h +++ b/src/table/station_land.h @@ -775,6 +775,62 @@ static const DrawTileSeqStruct _station_display_datas_waypoint_Y[] = { @@ -432,7 +427,7 @@ index 53a69e1e2..2b6deecd0 100644 static const DrawTileSprites _station_display_datas_oilrig[] = { diff --git a/src/track_type.h b/src/track_type.h -index 70278c58d..0c64b9978 100644 +index 70278c58d9..0c64b99780 100644 --- a/src/track_type.h +++ b/src/track_type.h @@ -120,4 +120,11 @@ DECLARE_ENUM_AS_BIT_SET(TrackdirBits) diff --git a/manualPorts/openttd-git/underground.patch b/manualPorts/openttd-git/underground.patch index 57e331a..6d4f29f 100644 --- a/manualPorts/openttd-git/underground.patch +++ b/manualPorts/openttd-git/underground.patch @@ -1,6 +1,6 @@ diff --git a/layer.txt b/layer.txt new file mode 100644 -index 000000000..a5947189b +index 0000000000..a5947189b9 --- /dev/null +++ b/layer.txt @@ -0,0 +1,48 @@ @@ -53,14 +53,14 @@ index 000000000..a5947189b +* Expansion of the underground station does not work (when adding cells, a new one is added) +- GF. "jumps" (the non-editable part of the station changes randomly when the station is modified) diff --git a/media/baseset/opntitle.dat b/media/baseset/opntitle.dat -index 264aaff60..9793856b7 100644 +index 264aaff60b..9793856b76 100644 Binary files a/media/baseset/opntitle.dat and b/media/baseset/opntitle.dat differ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 631eaf6de..c253e8295 100644 +index dd3a6c2f06..882402d8ab 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt -@@ -210,6 +210,10 @@ add_files( - landscape.h +@@ -222,6 +222,10 @@ add_files( + landscape_cmd.h landscape_type.h language.h + layer.cpp @@ -70,9 +70,9 @@ index 631eaf6de..c253e8295 100644 livery.h main_gui.cpp map.cpp -@@ -451,6 +455,8 @@ add_files( - tunnelbridge.h +@@ -481,6 +485,8 @@ add_files( tunnelbridge_cmd.cpp + tunnelbridge_cmd.h tunnelbridge_map.h + underground_gui.cpp + underground_gui.h @@ -80,7 +80,7 @@ index 631eaf6de..c253e8295 100644 vehicle_base.h vehicle_cmd.cpp diff --git a/src/base_station_base.h b/src/base_station_base.h -index 40543f1b8..ace01445a 100644 +index 40543f1b8f..ace01445a9 100644 --- a/src/base_station_base.h +++ b/src/base_station_base.h @@ -26,6 +26,13 @@ struct StationSpecList { @@ -107,7 +107,7 @@ index 40543f1b8..ace01445a 100644 CommandCost BeforeAddTile(TileIndex tile, StationRectMode mode); CommandCost BeforeAddRect(TileIndex tile, int w, int h, StationRectMode mode); diff --git a/src/clear_cmd.cpp b/src/clear_cmd.cpp -index 403631312..61704487e 100644 +index 17711a6267..e532fa529e 100644 --- a/src/clear_cmd.cpp +++ b/src/clear_cmd.cpp @@ -12,6 +12,7 @@ @@ -118,7 +118,7 @@ index 403631312..61704487e 100644 #include "viewport_func.h" #include "water.h" #include "core/random_func.hpp" -@@ -98,8 +99,28 @@ static void DrawClearLandFence(const TileInfo *ti) +@@ -99,8 +100,28 @@ static void DrawClearLandFence(const TileInfo *ti) EndSpriteCombine(); } @@ -147,7 +147,7 @@ index 403631312..61704487e 100644 switch (GetClearGround(ti->tile)) { case CLEAR_GRASS: DrawClearLandTile(ti, GetClearDensity(ti->tile)); -@@ -124,6 +145,9 @@ static void DrawTile_Clear(TileInfo *ti) +@@ -125,6 +146,9 @@ static void DrawTile_Clear(TileInfo *ti) break; } @@ -157,7 +157,7 @@ index 403631312..61704487e 100644 DrawBridgeMiddle(ti); } -@@ -321,7 +345,7 @@ void GenerateClearTile() +@@ -322,7 +346,7 @@ void GenerateClearTile() SetGeneratingWorldProgress(GWP_ROUGH_ROCKY, gi + i); do { IncreaseGeneratingWorldProgress(GWP_ROUGH_ROCKY); @@ -166,7 +166,7 @@ index 403631312..61704487e 100644 if (IsTileType(tile, MP_CLEAR) && !IsClearGround(tile, CLEAR_DESERT)) SetClearGroundDensity(tile, CLEAR_ROUGH, 3); } while (--i); -@@ -329,7 +353,7 @@ void GenerateClearTile() +@@ -330,7 +354,7 @@ void GenerateClearTile() i = gi; do { uint32 r = Random(); @@ -176,7 +176,7 @@ index 403631312..61704487e 100644 IncreaseGeneratingWorldProgress(GWP_ROUGH_ROCKY); if (IsTileType(tile, MP_CLEAR) && !IsClearGround(tile, CLEAR_DESERT)) { diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp -index 5cdb744ab..ed1f30af7 100644 +index 7f663fe863..63307d17d9 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -26,6 +26,7 @@ @@ -187,7 +187,7 @@ index 5cdb744ab..ed1f30af7 100644 #include "viewport_func.h" #include "window_func.h" #include "date_func.h" -@@ -1070,6 +1071,7 @@ DEF_CONSOLE_CMD(ConRestart) +@@ -1072,6 +1073,7 @@ DEF_CONSOLE_CMD(ConRestart) } /* Don't copy the _newgame pointers to the real pointers, so call SwitchToMode directly */ @@ -196,10 +196,10 @@ index 5cdb744ab..ed1f30af7 100644 _settings_game.game_creation.map_y = FindFirstBit(MapSizeY()); _switch_mode = SM_RESTARTGAME; diff --git a/src/disaster_vehicle.cpp b/src/disaster_vehicle.cpp -index cc245b38f..66a088595 100644 +index 668a1caea5..d339e898b0 100644 --- a/src/disaster_vehicle.cpp +++ b/src/disaster_vehicle.cpp -@@ -325,7 +325,7 @@ static bool DisasterTick_Ufo(DisasterVehicle *v) +@@ -326,7 +326,7 @@ static bool DisasterTick_Ufo(DisasterVehicle *v) return true; } if (++v->age < 6) { @@ -208,7 +208,7 @@ index cc245b38f..66a088595 100644 return true; } v->current_order.SetDestination(1); -@@ -572,12 +572,12 @@ static bool DisasterTick_Big_Ufo(DisasterVehicle *v) +@@ -573,12 +573,12 @@ static bool DisasterTick_Big_Ufo(DisasterVehicle *v) } if (++v->age < 6) { @@ -223,7 +223,7 @@ index cc245b38f..66a088595 100644 TileIndex tile = tile_org; do { if (IsPlainRailTile(tile) && -@@ -958,7 +958,7 @@ void ReleaseDisastersTargetingVehicle(VehicleID vehicle) +@@ -959,7 +959,7 @@ void ReleaseDisastersTargetingVehicle(VehicleID vehicle) if (v->current_order.GetDestination() != 0 && v->dest_tile == vehicle) { /* Revert to target-searching */ v->current_order.SetDestination(0); @@ -233,7 +233,7 @@ index cc245b38f..66a088595 100644 v->age = 0; } diff --git a/src/genworld.cpp b/src/genworld.cpp -index 587d100b5..fc0f763c3 100644 +index 587d100b5a..fc0f763c37 100644 --- a/src/genworld.cpp +++ b/src/genworld.cpp @@ -321,7 +321,7 @@ void GenerateWorld(GenWorldMode mode, uint size_x, uint size_y, bool reset_setti @@ -246,7 +246,7 @@ index 587d100b5..fc0f763c3 100644 _GenerateWorld(); diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp -index 2489105c2..00f18699c 100644 +index 2489105c23..00f18699ce 100644 --- a/src/genworld_gui.cpp +++ b/src/genworld_gui.cpp @@ -16,6 +16,8 @@ @@ -409,7 +409,7 @@ index 2489105c2..00f18699c 100644 /* Date. */ NWidget(NWID_HORIZONTAL), diff --git a/src/gfx_type.h b/src/gfx_type.h -index a6bf3cf6d..a7c157ada 100644 +index 932a6cb87d..5692821300 100644 --- a/src/gfx_type.h +++ b/src/gfx_type.h @@ -156,6 +156,7 @@ struct DrawPixelInfo { @@ -421,7 +421,7 @@ index a6bf3cf6d..a7c157ada 100644 }; diff --git a/src/heightmap.cpp b/src/heightmap.cpp -index 0c726371c..a073c7cf4 100644 +index 0c726371ce..a073c7cf46 100644 --- a/src/heightmap.cpp +++ b/src/heightmap.cpp @@ -14,6 +14,7 @@ @@ -443,7 +443,7 @@ index 0c726371c..a073c7cf4 100644 for (row = 0; (uint)row < height; row++) { for (col = 0; (uint)col < width; col++) { diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp -index b03a722b7..fd00ec0cd 100644 +index 41ee3ac06e..a18fc64da5 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -12,6 +12,7 @@ @@ -454,7 +454,7 @@ index b03a722b7..fd00ec0cd 100644 #include "viewport_func.h" #include "command_func.h" #include "town.h" -@@ -1444,7 +1445,7 @@ static CommandCost CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTil +@@ -1447,7 +1448,7 @@ static CommandCost CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTil IndustryGfx gfx = GetTranslatedIndustryTileID(it.gfx); TileIndex cur_tile = TileAddWrap(tile, it.ti.x, it.ti.y); @@ -463,7 +463,7 @@ index b03a722b7..fd00ec0cd 100644 return_cmd_error(STR_ERROR_SITE_UNSUITABLE); } -@@ -2023,7 +2024,7 @@ CommandCost CmdBuildIndustry(TileIndex tile, DoCommandFlag flags, uint32 p1, uin +@@ -2023,7 +2024,7 @@ CommandCost CmdBuildIndustry(DoCommandFlag flags, TileIndex tile, IndustryType i /* We should not have more than one Random() in a function call * because parameter evaluation order is not guaranteed in the c++ standard */ @@ -472,7 +472,7 @@ index b03a722b7..fd00ec0cd 100644 /* Start with a random layout */ size_t layout = RandomRange((uint32)num_layouts); /* Check now each layout, starting with the random one */ -@@ -2229,7 +2230,7 @@ static Industry *PlaceIndustry(IndustryType type, IndustryAvailabilityCallType c +@@ -2220,7 +2221,7 @@ static Industry *PlaceIndustry(IndustryType type, IndustryAvailabilityCallType c { uint tries = try_hard ? 10000u : 2000u; for (; tries > 0; tries--) { @@ -482,10 +482,10 @@ index b03a722b7..fd00ec0cd 100644 } return nullptr; diff --git a/src/landscape.cpp b/src/landscape.cpp -index f13d1835f..6ed0c6569 100644 +index b921deef22..b5082b2470 100644 --- a/src/landscape.cpp +++ b/src/landscape.cpp -@@ -34,6 +34,7 @@ +@@ -35,6 +35,7 @@ #include <array> #include <list> #include <set> @@ -493,7 +493,7 @@ index f13d1835f..6ed0c6569 100644 #include "table/strings.h" #include "table/sprites.h" -@@ -813,10 +814,10 @@ void RunTileLoop() +@@ -808,10 +809,10 @@ void RunTileLoop() 0xD8F, 0x1296, 0x2496, 0x4357, 0x8679, 0x1030E, 0x206CD, 0x403FE, 0x807B8, 0x1004B2, 0x2006A8, 0x4004B2, 0x800B87 }; static_assert(lengthof(feedbacks) == 2 * MAX_MAP_SIZE_BITS - 2 * MIN_MAP_SIZE_BITS + 1); @@ -506,7 +506,7 @@ index f13d1835f..6ed0c6569 100644 TileIndex tile = _cur_tileloop_tile; /* The LFSR cannot have a zeroed state. */ -@@ -840,17 +841,23 @@ void RunTileLoop() +@@ -835,17 +836,23 @@ void RunTileLoop() void InitializeLandscape() { @@ -539,7 +539,7 @@ index f13d1835f..6ed0c6569 100644 } static const byte _genterrain_tbl_1[5] = { 10, 22, 33, 37, 4 }; -@@ -1281,7 +1288,7 @@ static void CreateRivers() +@@ -1276,7 +1283,7 @@ static void CreateRivers() for (; wells != 0; wells--) { IncreaseGeneratingWorldProgress(GWP_RIVER); for (int tries = 0; tries < 128; tries++) { @@ -549,7 +549,7 @@ index f13d1835f..6ed0c6569 100644 if (FlowRiver(t, t)) break; } diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt -index 1ad648233..dafb1b733 100644 +index 1ad648233d..dafb1b7331 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -2730,7 +2730,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tremweg @@ -562,7 +562,7 @@ index 1ad648233..dafb1b733 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stasie klas: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stasie tiepe: {LTBLUE}{STRING} diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt -index 5aacaf933..533380300 100644 +index 5aacaf9339..533380300b 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -2472,7 +2472,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}مالك @@ -575,7 +575,7 @@ index 5aacaf933..533380300 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK} فئة المحطة: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}نوع المحطة: {LTBLUE}{STRING} diff --git a/src/lang/basque.txt b/src/lang/basque.txt -index 305520635..c83d88823 100644 +index 3055206359..c83d88823e 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -2593,7 +2593,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tranbia @@ -588,7 +588,7 @@ index 305520635..c83d88823 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Geltoki mota: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Geltoki mota: {LTBLUE}{STRING} diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt -index 1dbc92f0b..532900688 100644 +index 1dbc92f0b1..532900688f 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -3056,7 +3056,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Улад @@ -601,10 +601,10 @@ index 1dbc92f0b..532900688 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Кляса станцыі: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тып станцыi: {LTBLUE}{STRING} diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt -index 55872e2c4..e62dc9fb3 100644 +index f3b62be925..0e3ced3192 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt -@@ -2921,7 +2921,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Dono da +@@ -2923,7 +2923,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Dono da STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Dono da linha ferroviária: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Prefeitura: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nenhum @@ -614,7 +614,7 @@ index 55872e2c4..e62dc9fb3 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classe de Estação: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de Estação: {LTBLUE}{STRING} diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt -index 72c553124..2cd79f0bc 100644 +index 72c5531243..2cd79f0bcc 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -2643,7 +2643,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Собс @@ -627,7 +627,7 @@ index 72c553124..2cd79f0bc 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Клас на станцията: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тип на станцията: {LTBLUE}{STRING} diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt -index 6409ddd26..dab10e967 100644 +index 6409ddd264..dab10e967f 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -2923,7 +2923,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta @@ -640,10 +640,10 @@ index 6409ddd26..dab10e967 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classe d'estació: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipus d'estació: {LTBLUE}{STRING} diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt -index 59ba78ef9..a8c6b83da 100644 +index 14ed8faf61..6883a06c30 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt -@@ -2835,7 +2835,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlasnik +@@ -2876,7 +2876,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlasnik STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Vlasnik željeznice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Područna nadležnost: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nijedan/Nitko/Ništa @@ -653,10 +653,10 @@ index 59ba78ef9..a8c6b83da 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Klasa postaje: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta postaje: {LTBLUE}{STRING} diff --git a/src/lang/czech.txt b/src/lang/czech.txt -index 8b6bdb437..35010f968 100644 +index 371594ff94..73c23a3e67 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt -@@ -3011,7 +3011,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Majitel +@@ -3014,7 +3014,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Majitel STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Majitel tratě: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Místní správa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nic @@ -666,7 +666,7 @@ index 8b6bdb437..35010f968 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Třída stanice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Druh stanice: {LTBLUE}{STRING} diff --git a/src/lang/danish.txt b/src/lang/danish.txt -index f3d32bce8..1338a15ba 100644 +index f3d32bce86..1338a15baf 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -2922,7 +2922,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Ejer af @@ -679,7 +679,7 @@ index f3d32bce8..1338a15ba 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstype: {LTBLUE}{STRING} diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt -index ff15afbf6..7f320f552 100644 +index ff15afbf64..7f320f5525 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -2922,7 +2922,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eigenaar @@ -692,7 +692,7 @@ index ff15afbf6..7f320f552 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstype: {LTBLUE}{STRING} diff --git a/src/lang/english.txt b/src/lang/english.txt -index becf8d35c..0a3ea67f2 100644 +index becf8d35c2..0a3ea67f25 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -477,6 +477,19 @@ STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Airport constru @@ -761,7 +761,7 @@ index becf8d35c..0a3ea67f2 100644 + +# end underground string diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt -index 07a31fe0f..119f957b4 100644 +index 07a31fe0ff..119f957b4c 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -2655,7 +2655,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramway @@ -774,7 +774,7 @@ index 07a31fe0f..119f957b4 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Station class: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Station type: {LTBLUE}{STRING} diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt -index 764f484fe..dd0345629 100644 +index 764f484fe3..dd0345629e 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -2922,7 +2922,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Streetca @@ -787,7 +787,7 @@ index 764f484fe..dd0345629 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Station class: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Station type: {LTBLUE}{STRING} diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt -index d9f5377ea..d0f4e5291 100644 +index d9f5377eac..d0f4e52914 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -2294,7 +2294,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Posedant @@ -800,7 +800,7 @@ index d9f5377ea..d0f4e5291 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stacioklaso: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Staciotipo: {LTBLUE}{STRING} diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt -index c98a8a242..a0865eef0 100644 +index c98a8a2425..a0865eef0c 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -2927,7 +2927,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Trammite @@ -813,7 +813,7 @@ index c98a8a242..a0865eef0 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Jaama järk: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Jaama liik: {LTBLUE}{STRING} diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt -index ff2312ab7..46895e640 100644 +index ff2312ab71..46895e6408 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -2427,7 +2427,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Sporvogn @@ -826,7 +826,7 @@ index ff2312ab7..46895e640 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Støð klassi: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Støð slag: {LTBLUE}{STRING} diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt -index 2d08b1e3c..5632d8b5e 100644 +index 2d08b1e3c7..5632d8b5e0 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -2920,7 +2920,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Raitioti @@ -839,7 +839,7 @@ index 2d08b1e3c..5632d8b5e 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Aseman luokka: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Aseman tyyppi: {LTBLUE}{STRING} diff --git a/src/lang/french.txt b/src/lang/french.txt -index fd4bdd431..fe21b4da0 100644 +index fd4bdd4314..fe21b4da00 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -2923,7 +2923,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Proprié @@ -852,7 +852,7 @@ index fd4bdd431..fe21b4da0 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Type de station{NBSP}: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Type de station{NBSP}: {LTBLUE}{STRING} diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt -index 13f1d7f74..5ccf9aa7c 100644 +index 13f1d7f749..5ccf9aa7cd 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -2910,7 +2910,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Seilbhea @@ -865,10 +865,10 @@ index 13f1d7f74..5ccf9aa7c 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Seòrsa an stèisein: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Seòrsa an stèisein: {LTBLUE}{STRING} diff --git a/src/lang/galician.txt b/src/lang/galician.txt -index b281dbc26..535fc65d6 100644 +index c5817d0f47..31c5bea9c5 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt -@@ -2731,7 +2731,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta +@@ -2923,7 +2923,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propietario da vía ferroviaria: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoridade local: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ningunha @@ -878,7 +878,7 @@ index b281dbc26..535fc65d6 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clase de estación: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estación: {LTBLUE}{STRING} diff --git a/src/lang/german.txt b/src/lang/german.txt -index 8b1d81dba..aa1282c29 100644 +index 8b1d81dba1..aa1282c29d 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -2923,7 +2923,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Straßen @@ -891,7 +891,7 @@ index 8b1d81dba..aa1282c29 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstyp: {LTBLUE}{STRING} diff --git a/src/lang/greek.txt b/src/lang/greek.txt -index ca18521d5..5d69b32e1 100644 +index ca18521d53..5d69b32e1c 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -3029,7 +3029,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Ιδιο @@ -904,7 +904,7 @@ index ca18521d5..5d69b32e1 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Κατηγορία σταθμού: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Τύπος σταθμού: {LTBLUE}{STRING} diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt -index cd97ba5fe..fb5dbf1dd 100644 +index cd97ba5fe1..fb5dbf1dd7 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -2703,7 +2703,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}:בעל @@ -917,10 +917,10 @@ index cd97ba5fe..fb5dbf1dd 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}{LTBLUE}{STRING}: אופי התחנה STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK} {LTBLUE}{STRING}: סוג התחנה diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt -index 931b1475e..de42765a3 100644 +index d457ea8ba4..7bc8c5b922 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt -@@ -2982,7 +2982,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}A villam +@@ -2986,7 +2986,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}A villam STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}A vasúti pálya tulajdonosa: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Helyi önkormányzat: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nincs @@ -930,7 +930,7 @@ index 931b1475e..de42765a3 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Állomás osztálya: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Állomás típusa: {LTBLUE}{STRING} diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt -index 2d3bda353..44a916f2b 100644 +index 2d3bda353c..44a916f2b2 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -2535,7 +2535,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eigandi @@ -943,10 +943,10 @@ index 2d3bda353..44a916f2b 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Tegund stöðvar: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tegund stöðvar: {LTBLUE}{STRING} diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt -index f2628aa05..c2947b55b 100644 +index af5fe37acd..2237d70c42 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt -@@ -2920,7 +2920,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Pemilik +@@ -2922,7 +2922,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Pemilik STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Pemilik Rel Kereta: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Pemkot setempat: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Kosong @@ -956,10 +956,10 @@ index f2628aa05..c2947b55b 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Kelas Stasiun: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipe Stasiun: {LTBLUE}{STRING} diff --git a/src/lang/irish.txt b/src/lang/irish.txt -index 88d8449d9..ba04daa46 100644 +index 9341b996cd..32f79e0df1 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt -@@ -2912,7 +2912,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Úinéir +@@ -2914,7 +2914,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Úinéir STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Úinéir an iarnróid: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Údarás áitiúil: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ceann ar bith @@ -969,10 +969,10 @@ index 88d8449d9..ba04daa46 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Aicme an stáisiúin: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Cineál stáisiúin: {LTBLUE}{STRING} diff --git a/src/lang/italian.txt b/src/lang/italian.txt -index 340ee9d4e..19444aef5 100644 +index 274e600873..af0a222887 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt -@@ -2886,7 +2886,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propriet +@@ -2894,7 +2894,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propriet STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Proprietario ferrovia: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autorità locale: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nessuna @@ -982,7 +982,7 @@ index 340ee9d4e..19444aef5 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Tipo stazione: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo stazione: {LTBLUE}{STRING} diff --git a/src/lang/korean.txt b/src/lang/korean.txt -index 448c73802..5fd406ddb 100644 +index 448c738025..5fd406ddb7 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -2923,7 +2923,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}전찻 @@ -995,7 +995,7 @@ index 448c73802..5fd406ddb 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}역 분류: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}역 종류: {LTBLUE}{STRING} diff --git a/src/lang/latin.txt b/src/lang/latin.txt -index 88f0a360e..7097884f8 100644 +index 88f0a360ee..7097884f87 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -2911,7 +2911,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Possesso @@ -1008,7 +1008,7 @@ index 88f0a360e..7097884f8 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classis stationis: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Typus stationis: {LTBLUE}{STRING} diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt -index 2416d61e4..bacbfb1e5 100644 +index 2416d61e45..bacbfb1e5c 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -2923,7 +2923,7 @@ STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Dzelzce @@ -1021,7 +1021,7 @@ index 2416d61e4..bacbfb1e5 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stacijas klase: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stacijas tips: {LTBLUE}{STRING} diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt -index ebd40a474..4bca69e73 100644 +index ebd40a4743..4bca69e730 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -3078,7 +3078,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramvaja @@ -1034,7 +1034,7 @@ index ebd40a474..4bca69e73 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stotelės rūšis: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stotelės tipas: {LTBLUE}{STRING} diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt -index 38cece0de..24b831122 100644 +index 38cece0dec..24b8311229 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -2918,7 +2918,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramschi @@ -1047,7 +1047,7 @@ index 38cece0de..24b831122 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Statiounsklass: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Statiounstyp: {LTBLUE}{STRING} diff --git a/src/lang/malay.txt b/src/lang/malay.txt -index 2f4811261..3e04e3d4a 100644 +index 2f4811261c..3e04e3d4a3 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -2433,7 +2433,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Pemilik @@ -1060,10 +1060,10 @@ index 2f4811261..3e04e3d4a 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Kelas stesen: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Jenis stesen: {LTBLUE}{STRING} diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt -index 911b7ba78..02e359b91 100644 +index 8341ff0686..c96be04da8 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt -@@ -2922,7 +2922,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eier av +@@ -2926,7 +2926,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Eier av STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Eier av jernbanespor: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Bystyret: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen @@ -1073,7 +1073,7 @@ index 911b7ba78..02e359b91 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stasjonstype: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stasjonstype: {LTBLUE}{STRING} diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt -index d45fb4d56..a4329a177 100644 +index d45fb4d563..a4329a177a 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -2603,7 +2603,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Trikkesp @@ -1086,7 +1086,7 @@ index d45fb4d56..a4329a177 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stasjonsklasse: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stasjontype: {LTBLUE}{STRING} diff --git a/src/lang/persian.txt b/src/lang/persian.txt -index 7ebfe1503..d5b98ab5a 100644 +index 7ebfe1503d..d5b98ab5aa 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -2393,7 +2393,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}مالک @@ -1099,10 +1099,10 @@ index 7ebfe1503..d5b98ab5a 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}کلاس ایستگاه: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}نوع ایستگاه: {LTBLUE}{STRING} diff --git a/src/lang/polish.txt b/src/lang/polish.txt -index c621eb314..ddc00c8c8 100644 +index 77369b0f88..b45cab6046 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt -@@ -3300,7 +3300,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Właści +@@ -3302,7 +3302,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Właści STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Właściciel linii kolejowej: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokalne władze: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Brak @@ -1112,7 +1112,7 @@ index c621eb314..ddc00c8c8 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Rodzaj stacji: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Typ stacji: {LTBLUE}{STRING} diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt -index 4d8a23429..e750af281 100644 +index 4d8a234294..e750af2811 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -2923,7 +2923,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Dono da @@ -1125,10 +1125,10 @@ index 4d8a23429..e750af281 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Tipo de estação: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estação: {LTBLUE}{STRING} diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt -index 20778ce5a..f3410b16d 100644 +index c4b96a3589..b990beed99 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt -@@ -2913,7 +2913,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propriet +@@ -2922,7 +2922,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propriet STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Proprietar al căii ferate: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoritatea locală: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Niciuna @@ -1138,7 +1138,7 @@ index 20778ce5a..f3410b16d 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clasa staţiei: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tip staţie: {LTBLUE}{STRING} diff --git a/src/lang/russian.txt b/src/lang/russian.txt -index 534be43c1..1b1e97c9c 100644 +index 534be43c18..1b1e97c9c9 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -604,6 +604,19 @@ STR_LANDSCAPING_MENU_LANDSCAPING :Ландшаф @@ -1207,7 +1207,7 @@ index 534be43c1..1b1e97c9c 100644 + +# end underground string diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt -index 10f341a6f..27a18ebaa 100644 +index 10f341a6f8..27a18ebaa0 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -3113,7 +3113,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlasnik @@ -1220,7 +1220,7 @@ index 10f341a6f..27a18ebaa 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Klasa stanice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta stanice: {LTBLUE}{STRING} diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt -index 5f92aff44..f189e145e 100644 +index 5f92aff44c..f189e145e8 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -2922,7 +2922,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}有轨 @@ -1233,7 +1233,7 @@ index 5f92aff44..f189e145e 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}车站分类: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}车站类型: {LTBLUE}{STRING} diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt -index 102592dec..ad034fcfb 100644 +index 102592deca..ad034fcfb7 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -2986,7 +2986,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Vlastní @@ -1246,7 +1246,7 @@ index 102592dec..ad034fcfb 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Trieda stanice: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Typ stanice: {LTBLUE}{STRING} diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt -index 7215adc07..9a06c71a3 100644 +index 7215adc077..9a06c71a31 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -2848,7 +2848,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Lastnik @@ -1259,10 +1259,10 @@ index 7215adc07..9a06c71a3 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Razred postaje: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Vrsta postaje: {LTBLUE}{STRING} diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt -index 4af060379..7d30f6587 100644 +index 8300736058..17cfd4a3ce 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt -@@ -2920,7 +2920,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta +@@ -2923,7 +2923,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propietario del ferrocarril: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoridad local: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ninguna @@ -1272,7 +1272,7 @@ index 4af060379..7d30f6587 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clase de estación: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estación: {LTBLUE}{STRING} diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt -index 4bfac233f..829699c54 100644 +index 4bfac233fd..829699c543 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -2919,7 +2919,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propieta @@ -1285,10 +1285,10 @@ index 4bfac233f..829699c54 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Clase de estación: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de estación: {LTBLUE}{STRING} diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt -index a39e3925a..d4e43ebb1 100644 +index f63ac4e02d..44f084a963 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt -@@ -2920,7 +2920,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Spårvä +@@ -2921,7 +2921,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Spårvä STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Järnvägens ägare: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Lokala myndigheter: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Ingen @@ -1298,10 +1298,10 @@ index a39e3925a..d4e43ebb1 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Stationsklass: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Stationstyp: {LTBLUE}{STRING} diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt -index 8894401bc..e84e9080b 100644 +index 621ebb8517..43cf891ae3 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt -@@ -2566,7 +2566,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ட் +@@ -2591,7 +2591,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ட் STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}இரயில்வே உரிமையாளர்: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}நகராட்சி: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :ஒன்றுமில்லை @@ -1311,10 +1311,10 @@ index 8894401bc..e84e9080b 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}நிலையத்தின் பிரிவு: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}நிலையத்தின் வகை: {LTBLUE}{STRING} diff --git a/src/lang/thai.txt b/src/lang/thai.txt -index 5a9fe48bd..770e775e1 100644 +index a90f48480e..ed69fa901a 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt -@@ -2628,7 +2628,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ผู +@@ -2629,7 +2629,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}ผู STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}ผู้ครอบครองทางรถไฟ: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}ขึ้นตรงกับผู้ดูแลในท้องถิ่น: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :ไม่มี @@ -1324,10 +1324,10 @@ index 5a9fe48bd..770e775e1 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}ประเภทของสถานี: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}รูปแบบของสถานี: {LTBLUE}{STRING} diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt -index 941462a07..51815a232 100644 +index f8e60b6e7a..bc1d50e6c5 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt -@@ -2716,7 +2716,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}電車 +@@ -2820,7 +2820,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}電車 STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}鐵路所有者:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}地方政府:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :無 @@ -1337,7 +1337,7 @@ index 941462a07..51815a232 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}車站風格:{LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}車站種類:{LTBLUE}{STRING} diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt -index 0d35521c3..9bb95d6e5 100644 +index 0d35521c38..9bb95d6e54 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -2919,7 +2919,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramvay @@ -1350,7 +1350,7 @@ index 0d35521c3..9bb95d6e5 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}İstasyon sınıfı: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}İstasyon türü: {LTBLUE}{STRING} diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt -index 77530aa42..b78a9b590 100644 +index 77530aa423..b78a9b5909 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -3049,7 +3049,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Влас @@ -1363,7 +1363,7 @@ index 77530aa42..b78a9b590 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Клас станції: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Тип станції: {LTBLUE}{STRING} diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt -index 478f75c69..499479052 100644 +index 7a914ff636..99fb102071 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -2922,7 +2922,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Chủ đ @@ -1376,7 +1376,7 @@ index 478f75c69..499479052 100644 STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Loại ga,bến: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Kiểu ga,bến: {LTBLUE}{STRING} diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt -index 4b970c919..b244655bd 100644 +index 4b970c9193..b244655bdd 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -2685,7 +2685,7 @@ STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Perchenn @@ -1390,7 +1390,7 @@ index 4b970c919..b244655bd 100644 STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Math gorsaf: {LTBLUE}{STRING} diff --git a/src/layer.cpp b/src/layer.cpp new file mode 100644 -index 000000000..aab234e53 +index 0000000000..aab234e53d --- /dev/null +++ b/src/layer.cpp @@ -0,0 +1,136 @@ @@ -1532,7 +1532,7 @@ index 000000000..aab234e53 +} diff --git a/src/layer_func.h b/src/layer_func.h new file mode 100644 -index 000000000..05022163a +index 0000000000..05022163a2 --- /dev/null +++ b/src/layer_func.h @@ -0,0 +1,102 @@ @@ -1640,7 +1640,7 @@ index 000000000..05022163a +#endif /* LAYER_FUNC_H */ diff --git a/src/layer_gui.h b/src/layer_gui.h new file mode 100644 -index 000000000..7b791b7e9 +index 0000000000..7b791b7e9f --- /dev/null +++ b/src/layer_gui.h @@ -0,0 +1,17 @@ @@ -1663,7 +1663,7 @@ index 000000000..7b791b7e9 +#endif /* LAYER_GUI_H */ diff --git a/src/layer_type.h b/src/layer_type.h new file mode 100644 -index 000000000..53eafdde6 +index 0000000000..53eafdde63 --- /dev/null +++ b/src/layer_type.h @@ -0,0 +1,22 @@ @@ -1690,20 +1690,20 @@ index 000000000..53eafdde6 + +#endif /* LAYER_TYPE_H */ diff --git a/src/main_gui.cpp b/src/main_gui.cpp -index 6131050cf..5a9a2c2e7 100644 +index b2c4bfee48..6a84d778bb 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp -@@ -33,6 +33,9 @@ - #include "guitimer_func.h" +@@ -34,6 +34,9 @@ #include "error.h" #include "news_gui.h" + #include "misc_cmd.h" +#include "gfx_func.h" +#include "layer_gui.h" +#include "landscape.h" #include "saveload/saveload.h" -@@ -65,7 +68,7 @@ bool HandlePlacePushButton(Window *w, int widget, CursorID cursor, HighLightStyl +@@ -66,7 +69,7 @@ bool HandlePlacePushButton(Window *w, int widget, CursorID cursor, HighLightStyl if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); w->SetDirty(); @@ -1712,7 +1712,7 @@ index 6131050cf..5a9a2c2e7 100644 ResetObjectToPlace(); return false; } -@@ -152,6 +155,22 @@ void ZoomInOrOutToCursorWindow(bool in, Window *w) +@@ -153,6 +156,22 @@ void ZoomInOrOutToCursorWindow(bool in, Window *w) } } @@ -1735,7 +1735,7 @@ index 6131050cf..5a9a2c2e7 100644 void FixTitleGameZoom(int zoom_adjust) { if (_game_mode != GM_MENU) return; -@@ -421,7 +440,11 @@ struct MainWindow : Window +@@ -422,7 +441,11 @@ struct MainWindow : Window void OnMouseWheel(int wheel) override { if (_settings_client.gui.scrollwheel_scrolling != 2) { @@ -1749,7 +1749,7 @@ index 6131050cf..5a9a2c2e7 100644 } diff --git a/src/map.cpp b/src/map.cpp -index 308e28e49..b49dceb9c 100644 +index 2a08d656e6..7430c1a2e5 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -11,6 +11,7 @@ @@ -1789,7 +1789,7 @@ index 308e28e49..b49dceb9c 100644 } else { return CircularTileSearch(tile, size / 2, 0, 0, proc, user_data); diff --git a/src/map_func.h b/src/map_func.h -index b02ba5777..5ee5360c5 100644 +index 34cc5ee0ee..d4993b94bb 100644 --- a/src/map_func.h +++ b/src/map_func.h @@ -41,7 +41,7 @@ extern Tile *_m; @@ -1877,7 +1877,7 @@ index b02ba5777..5ee5360c5 100644 diff --git a/src/misc.cpp b/src/misc.cpp -index c46a1c11d..afbbc7506 100644 +index c46a1c11d4..afbbc75063 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -8,6 +8,7 @@ @@ -1898,10 +1898,10 @@ index c46a1c11d..afbbc7506 100644 _pause_mode = PM_UNPAUSED; _game_speed = 100; diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp -index f0492925d..9523abcd3 100644 +index bc5179f82f..32a8ad48c0 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp -@@ -210,10 +210,11 @@ public: +@@ -211,10 +211,11 @@ public: tile_ss << "0x" << std::setfill('0') << std::setw(4) << std::hex << std::uppercase << tile; // 0x%.4X std::string tile_str = tile_ss.str(); // Can't pass it directly to SetDParamStr as the string is only a temporary and would be destructed before the GetString call. @@ -1917,10 +1917,10 @@ index f0492925d..9523abcd3 100644 /* Local authority */ diff --git a/src/object_cmd.cpp b/src/object_cmd.cpp -index 7e1e36c1f..d6f46ef09 100644 +index b6ea0b4084..75f57585ae 100644 --- a/src/object_cmd.cpp +++ b/src/object_cmd.cpp -@@ -711,7 +711,7 @@ static bool TryBuildLightHouse() +@@ -710,7 +710,7 @@ static bool TryBuildLightHouse() */ static bool TryBuildTransmitter() { @@ -1929,17 +1929,17 @@ index 7e1e36c1f..d6f46ef09 100644 int h; if (IsTileType(tile, MP_CLEAR) && IsTileFlat(tile, &h) && h >= 4 && !IsBridgeAbove(tile)) { TileIndex t = tile; -@@ -775,7 +775,7 @@ void GenerateObjects() +@@ -774,7 +774,7 @@ void GenerateObjects() default: uint8 view = RandomRange(spec->views); -- if (CmdBuildObject(RandomTile(), DC_EXEC | DC_AUTO | DC_NO_TEST_TOWN_RATING | DC_NO_MODIFY_TOWN_RATING, i, view, {}).Succeeded()) amount--; -+ if (CmdBuildObject(TopTile(RandomTile()), DC_EXEC | DC_AUTO | DC_NO_TEST_TOWN_RATING | DC_NO_MODIFY_TOWN_RATING, i, view, {}).Succeeded()) amount--; +- if (CmdBuildObject(DC_EXEC | DC_AUTO | DC_NO_TEST_TOWN_RATING | DC_NO_MODIFY_TOWN_RATING, RandomTile(), i, view).Succeeded()) amount--; ++ if (CmdBuildObject(DC_EXEC | DC_AUTO | DC_NO_TEST_TOWN_RATING | DC_NO_MODIFY_TOWN_RATING, TopTile(RandomTile()), i, view).Succeeded()) amount--; break; } } diff --git a/src/rail.h b/src/rail.h -index a0bbb0109..553acf76f 100644 +index a0bbb0109b..553acf76f1 100644 --- a/src/rail.h +++ b/src/rail.h @@ -158,7 +158,7 @@ public: @@ -1952,10 +1952,10 @@ index a0bbb0109..553acf76f 100644 CursorID rail_swne; ///< Cursor for building rail in X direction CursorID rail_ew; ///< Cursor for building rail in E-W direction diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp -index 4c34f1ca8..48d377282 100644 +index 88f4adb0f6..0197dd6a49 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp -@@ -541,12 +541,12 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u +@@ -538,12 +538,12 @@ CommandCost CmdBuildSingleRail(DoCommandFlag flags, TileIndex tile, RailType rai uint num_new_road_pieces = (road != ROAD_NONE) ? 2 - CountBits(road) : 0; if (num_new_road_pieces > 0) { @@ -1970,7 +1970,7 @@ index 4c34f1ca8..48d377282 100644 } if (flags & DC_EXEC) { -@@ -609,7 +609,7 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u +@@ -606,7 +606,7 @@ CommandCost CmdBuildSingleRail(DoCommandFlag flags, TileIndex tile, RailType rai YapfNotifyTrackLayoutChange(tile, track); } @@ -1979,7 +1979,7 @@ index 4c34f1ca8..48d377282 100644 return cost; } -@@ -653,7 +653,7 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, +@@ -647,7 +647,7 @@ CommandCost CmdRemoveSingleRail(DoCommandFlag flags, TileIndex tile, Track track if (ret.Failed()) return ret; } @@ -1988,7 +1988,7 @@ index 4c34f1ca8..48d377282 100644 if (flags & DC_EXEC) { if (HasReservedTracks(tile, trackbit)) { -@@ -687,7 +687,7 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, +@@ -681,7 +681,7 @@ CommandCost CmdRemoveSingleRail(DoCommandFlag flags, TileIndex tile, Track track if ((present & trackbit) == 0) return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); if (present == (TRACK_BIT_X | TRACK_BIT_Y)) crossing = true; @@ -1997,7 +1997,7 @@ index 4c34f1ca8..48d377282 100644 /* Charge extra to remove signals on the track, if they are there */ if (HasSignalOnTrack(tile, track)) { -@@ -1004,7 +1004,7 @@ CommandCost CmdBuildTrainDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, u +@@ -983,7 +983,7 @@ CommandCost CmdBuildTrainDepot(DoCommandFlag flags, TileIndex tile, RailType rai if (!_settings_game.construction.build_on_slopes || !CanBuildDepotByTileh(dir, tileh)) { return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED); } @@ -2005,8 +2005,8 @@ index 4c34f1ca8..48d377282 100644 + cost.AddCost(_price[PR_BUILD_FOUNDATION] * UNDERGROUND_COST_MULTIPLIER(tile)); } - cost.AddCost(DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR)); -@@ -1029,8 +1029,8 @@ CommandCost CmdBuildTrainDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, u + cost.AddCost(Command<CMD_LANDSCAPE_CLEAR>::Do(flags, tile)); +@@ -1008,8 +1008,8 @@ CommandCost CmdBuildTrainDepot(DoCommandFlag flags, TileIndex tile, RailType rai YapfNotifyTrackLayoutChange(tile, DiagDirToDiagTrack(dir)); } @@ -2017,7 +2017,7 @@ index 4c34f1ca8..48d377282 100644 return cost; } -@@ -1712,7 +1712,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 +@@ -1641,7 +1641,7 @@ CommandCost CmdConvertRail(DoCommandFlag flags, TileIndex tile, TileIndex area_s InvalidateWindowData(WC_BUILD_VEHICLE, tile); } found_convertible_track = true; @@ -2026,7 +2026,7 @@ index 4c34f1ca8..48d377282 100644 break; default: // RAIL_TILE_NORMAL, RAIL_TILE_SIGNALS -@@ -1724,7 +1724,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 +@@ -1653,7 +1653,7 @@ CommandCost CmdConvertRail(DoCommandFlag flags, TileIndex tile, TileIndex area_s } } found_convertible_track = true; @@ -2035,7 +2035,7 @@ index 4c34f1ca8..48d377282 100644 break; } break; -@@ -1787,7 +1787,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 +@@ -1716,7 +1716,7 @@ CommandCost CmdConvertRail(DoCommandFlag flags, TileIndex tile, TileIndex area_s } found_convertible_track = true; @@ -2044,7 +2044,7 @@ index 4c34f1ca8..48d377282 100644 break; } -@@ -1798,7 +1798,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 +@@ -1727,7 +1727,7 @@ CommandCost CmdConvertRail(DoCommandFlag flags, TileIndex tile, TileIndex area_s } found_convertible_track = true; @@ -2054,10 +2054,10 @@ index 4c34f1ca8..48d377282 100644 } diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp -index 70a014434..649c4a56a 100644 +index 0701481119..01740d15bb 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp -@@ -402,7 +402,7 @@ static CommandCost RemoveRoad(TileIndex tile, DoCommandFlag flags, RoadBits piec +@@ -405,7 +405,7 @@ static CommandCost RemoveRoad(TileIndex tile, DoCommandFlag flags, RoadBits piec } } else { assert(IsDriveThroughStopTile(tile)); @@ -2066,7 +2066,7 @@ index 70a014434..649c4a56a 100644 if (flags & DC_EXEC) { /* A full diagonal road tile has two road bits. */ UpdateCompanyRoadInfrastructure(existing_rt, GetRoadOwner(tile, rtt), -2); -@@ -883,7 +883,7 @@ do_clear:; +@@ -879,7 +879,7 @@ do_clear:; /* Count pieces */ CountBits(pieces); @@ -2075,7 +2075,7 @@ index 70a014434..649c4a56a 100644 if (flags & DC_EXEC) { switch (GetTileType(tile)) { -@@ -1198,7 +1198,7 @@ CommandCost CmdBuildRoadDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, ui +@@ -1170,7 +1170,7 @@ CommandCost CmdBuildRoadDepot(DoCommandFlag flags, TileIndex tile, RoadType rt, MarkTileDirtyByTile(tile); MakeDefaultName(dep); } @@ -2085,7 +2085,7 @@ index 70a014434..649c4a56a 100644 } diff --git a/src/saveload/compat/map_sl_compat.h b/src/saveload/compat/map_sl_compat.h -index 84cfb2865..87ff25630 100644 +index 84cfb28652..87ff25630f 100644 --- a/src/saveload/compat/map_sl_compat.h +++ b/src/saveload/compat/map_sl_compat.h @@ -16,6 +16,7 @@ @@ -2097,7 +2097,7 @@ index 84cfb2865..87ff25630 100644 #endif /* SAVELOAD_COMPAT_MAP_H */ diff --git a/src/saveload/map_sl.cpp b/src/saveload/map_sl.cpp -index 07a36d6a3..b86328de8 100644 +index 07a36d6a38..b86328de8c 100644 --- a/src/saveload/map_sl.cpp +++ b/src/saveload/map_sl.cpp @@ -13,6 +13,7 @@ @@ -2136,7 +2136,7 @@ index 07a36d6a3..b86328de8 100644 void LoadCheck(size_t) const override diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h -index 0d4e0fb98..a8ef3fbe3 100644 +index 0d4e0fb984..a8ef3fbe39 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -307,6 +307,7 @@ enum SaveLoadVersion : uint16 { @@ -2148,7 +2148,7 @@ index 0d4e0fb98..a8ef3fbe3 100644 /* Patchpacks for a while considered it a good idea to jump a few versions diff --git a/src/script/api/script_window.hpp.in b/src/script/api/script_window.hpp.in -index a1dbb6567..b0c3656dc 100644 +index a1dbb65670..b0c3656dc6 100644 --- a/src/script/api/script_window.hpp.in +++ b/src/script/api/script_window.hpp.in @@ -65,6 +65,7 @@ @@ -2160,7 +2160,7 @@ index a1dbb6567..b0c3656dc 100644 #include "../../widgets/viewport_widget.h" #include "../../widgets/waypoint_widget.h" diff --git a/src/settings_table.cpp b/src/settings_table.cpp -index 4b94a8be7..bf6493391 100644 +index 4b94a8be78..bf64933914 100644 --- a/src/settings_table.cpp +++ b/src/settings_table.cpp @@ -17,6 +17,7 @@ @@ -2172,7 +2172,7 @@ index 4b94a8be7..bf6493391 100644 #include "train.h" #include "news_func.h" diff --git a/src/settings_type.h b/src/settings_type.h -index 9da2655d6..52cd66359 100644 +index 9da2655d6b..52cd663597 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -171,6 +171,8 @@ struct GUISettings { @@ -2193,7 +2193,7 @@ index 9da2655d6..52cd66359 100644 byte oil_refinery_limit; ///< distance oil refineries allowed from map edge byte snow_line_height; ///< the configured snow line height (deduced from "snow_coverage") diff --git a/src/station.cpp b/src/station.cpp -index 877f53d4e..14ac504a8 100644 +index 877f53d4e0..14ac504a87 100644 --- a/src/station.cpp +++ b/src/station.cpp @@ -11,6 +11,7 @@ @@ -2289,7 +2289,7 @@ index 877f53d4e..14ac504a8 100644 bool empty = this->AfterRemoveTile(st, ta.tile); if (ta.w != 1 || ta.h != 1) empty = empty || this->AfterRemoveTile(st, TILE_ADDXY(ta.tile, ta.w - 1, ta.h - 1)); diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp -index 1a188252c..c5f3f94ac 100644 +index 5a91fa4742..586302f4bf 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -11,6 +11,7 @@ @@ -2300,7 +2300,7 @@ index 1a188252c..c5f3f94ac 100644 #include "viewport_func.h" #include "viewport_kdtree.h" #include "command_func.h" -@@ -100,21 +101,24 @@ bool IsHangar(TileIndex t) +@@ -104,21 +105,24 @@ bool IsHangar(TileIndex t) * @return Succeeded command (if zero or one station found) or failed command (for two or more stations found). */ template <class T> @@ -2334,7 +2334,7 @@ index 1a188252c..c5f3f94ac 100644 } *st = (closest_station == INVALID_STATION) ? nullptr : T::Get(closest_station); return CommandCost(); -@@ -811,7 +815,7 @@ CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z +@@ -815,7 +819,7 @@ CommandCost CheckBuildableTile(TileIndex tile, uint invalid_dirs, int &allowed_z return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED); } } @@ -2343,8 +2343,8 @@ index 1a188252c..c5f3f94ac 100644 } /* The level of this tile must be equal to allowed_z. */ -@@ -1049,7 +1053,7 @@ static CommandCost CheckFlatLandRoadStop(TileArea tile_area, DoCommandFlag flags - ret = DoCommand(cur_tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); +@@ -1053,7 +1057,7 @@ static CommandCost CheckFlatLandRoadStop(TileArea tile_area, DoCommandFlag flags + ret = Command<CMD_LANDSCAPE_CLEAR>::Do(flags, cur_tile); if (ret.Failed()) return ret; cost.AddCost(ret); - cost.AddCost(RoadBuildCost(rt) * 2); @@ -2352,7 +2352,7 @@ index 1a188252c..c5f3f94ac 100644 } } } -@@ -1069,11 +1073,13 @@ CommandCost CanExpandRailStation(const BaseStation *st, TileArea &new_ta, Axis a +@@ -1073,11 +1077,13 @@ CommandCost CanExpandRailStation(const BaseStation *st, TileArea &new_ta, Axis a TileArea cur_ta = st->train_station; /* determine new size of train station region.. */ @@ -2371,7 +2371,7 @@ index 1a188252c..c5f3f94ac 100644 /* make sure the final size is not too big. */ if (new_ta.w > _settings_game.station.station_spread || new_ta.h > _settings_game.station.station_spread) { -@@ -1145,7 +1151,7 @@ void GetStationLayout(byte *layout, uint numtracks, uint plat_len, const Station +@@ -1149,7 +1155,7 @@ void GetStationLayout(byte *layout, uint numtracks, uint plat_len, const Station * @return command cost with the error or 'okay' */ template <class T, StringID error_message> @@ -2380,7 +2380,7 @@ index 1a188252c..c5f3f94ac 100644 { assert(*st == nullptr); bool check_surrounding = true; -@@ -1171,7 +1177,7 @@ CommandCost FindJoiningBaseStation(StationID existing_station, StationID station +@@ -1175,7 +1181,7 @@ CommandCost FindJoiningBaseStation(StationID existing_station, StationID station if (check_surrounding) { /* Make sure there is no more than one other station around us that is owned by us. */ @@ -2389,7 +2389,7 @@ index 1a188252c..c5f3f94ac 100644 if (ret.Failed()) return ret; } -@@ -1190,9 +1196,9 @@ CommandCost FindJoiningBaseStation(StationID existing_station, StationID station +@@ -1194,9 +1200,9 @@ CommandCost FindJoiningBaseStation(StationID existing_station, StationID station * @param st 'return' pointer for the found station * @return command cost with the error or 'okay' */ @@ -2401,7 +2401,7 @@ index 1a188252c..c5f3f94ac 100644 } /** -@@ -1301,8 +1307,8 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32 +@@ -1291,8 +1297,8 @@ CommandCost CmdBuildRailStation(DoCommandFlag flags, TileIndex tile_org, RailTyp CommandCost cost = CheckFlatLandRailStation(new_location, flags, axis, &est, rt, affected_vehicles, spec_class, spec_index, plat_len, numtracks); if (cost.Failed()) return cost; /* Add construction expenses. */ @@ -2412,7 +2412,7 @@ index 1a188252c..c5f3f94ac 100644 Station *st = nullptr; ret = FindJoiningStation(est, station_to_join, adjacent, new_location, &st); -@@ -1342,8 +1348,10 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32 +@@ -1332,8 +1338,10 @@ CommandCost CmdBuildRailStation(DoCommandFlag flags, TileIndex tile_org, RailTyp byte numtracks_orig; Track track; @@ -2424,7 +2424,7 @@ index 1a188252c..c5f3f94ac 100644 st->rect.BeforeAddRect(tile_org, w_org, h_org, StationRect::ADD_TRY); -@@ -1583,7 +1591,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, std::vector<T *> &affected_st +@@ -1573,7 +1581,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, std::vector<T *> &affected_st } /* If we reached here, the tile is valid so increase the quantity of tiles we will remove */ @@ -2433,16 +2433,16 @@ index 1a188252c..c5f3f94ac 100644 if (keep_rail || IsStationTileBlocked(tile)) { /* Don't refund the 'steel' of the track when we keep the -@@ -1662,7 +1670,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, std::vector<T *> &affected_st - CommandCost CmdRemoveFromRailStation(TileIndex start, DoCommandFlag flags, uint32 p1, uint32 p2, const std::string &text) +@@ -1650,7 +1658,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, std::vector<T *> &affected_st + CommandCost CmdRemoveFromRailStation(DoCommandFlag flags, TileIndex start, TileIndex end, bool keep_rail) { - TileIndex end = p1 == 0 ? start : p1; + if (end == 0) end = start; - if (start >= MapSize() || end >= MapSize()) return CMD_ERROR; + if (start >= MapSize() || end >= MapSize() || (LayerIndex(start) != LayerIndex(end))) return CMD_ERROR; TileArea ta(start, end); std::vector<Station *> affected_stations; -@@ -1725,11 +1733,16 @@ CommandCost RemoveRailStation(T *st, DoCommandFlag flags, Money removal_cost) +@@ -1711,11 +1719,16 @@ CommandCost RemoveRailStation(T *st, DoCommandFlag flags, Money removal_cost) /* determine width and height of platforms */ TileArea ta = st->train_station; @@ -2461,9 +2461,9 @@ index 1a188252c..c5f3f94ac 100644 /* only remove tiles that are actually train station tiles */ if (st->TileBelongsToRailStation(tile)) { std::vector<T*> affected_stations; // dummy -@@ -2095,13 +2108,21 @@ CommandCost CmdRemoveRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, ui +@@ -2060,13 +2073,21 @@ CommandCost CmdRemoveRoadStop(DoCommandFlag flags, TileIndex tile, uint8 width, /* Bankrupting company is not supposed to remove roads, there may be road vehicles. */ - if (!keep_drive_through_roads && (flags & DC_BANKRUPT)) return CMD_ERROR; + if (remove_road && (flags & DC_BANKRUPT)) return CMD_ERROR; - TileArea roadstop_area(tile, width, height); + /* ( ) */ @@ -2483,9 +2483,9 @@ index 1a188252c..c5f3f94ac 100644 + for (TileIndex top_tile : roadstop_area) { + TileIndex cur_tile = top_tile + layer * LayerSize(); /* Make sure the specified tile is a road stop of the correct type */ - if (!IsTileType(cur_tile, MP_STATION) || !IsRoadStop(cur_tile) || (uint32)GetRoadStopType(cur_tile) != GB(p2, 0, 1)) continue; + if (!IsTileType(cur_tile, MP_STATION) || !IsRoadStop(cur_tile) || GetRoadStopType(cur_tile) != stop_type) continue; -@@ -2271,6 +2292,10 @@ CommandCost CmdBuildAirport(TileIndex tile, DoCommandFlag flags, uint32 p1, uint +@@ -2230,6 +2251,10 @@ CommandCost CmdBuildAirport(DoCommandFlag flags, TileIndex tile, byte airport_ty if (w > _settings_game.station.station_spread || h > _settings_game.station.station_spread) { return_cmd_error(STR_ERROR_STATION_TOO_SPREAD_OUT); } @@ -2497,7 +2497,7 @@ index 1a188252c..c5f3f94ac 100644 AirportTileTableIterator iter(as->table[layout], tile); CommandCost cost = CheckFlatLandAirport(iter, flags); diff --git a/src/station_gui.cpp b/src/station_gui.cpp -index ecc7ea77c..221be09c1 100644 +index 9233878212..1816d4c8e6 100644 --- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -19,6 +19,7 @@ @@ -2508,7 +2508,7 @@ index ecc7ea77c..221be09c1 100644 #include "viewport_func.h" #include "widgets/dropdown_func.h" #include "station_base.h" -@@ -2211,20 +2212,27 @@ static const T *FindStationsNearby(TileArea ta, bool distant_join) +@@ -2212,20 +2213,27 @@ static const T *FindStationsNearby(TileArea ta, bool distant_join) _deleted_stations_nearby.clear(); /* Check the inside, to return, if we sit on another station */ @@ -2541,7 +2541,7 @@ index ecc7ea77c..221be09c1 100644 AddNearbyStation<T>(st->xy, &ctx); } } -@@ -2237,8 +2245,11 @@ static const T *FindStationsNearby(TileArea ta, bool distant_join) +@@ -2238,8 +2246,11 @@ static const T *FindStationsNearby(TileArea ta, bool distant_join) if (distant_join && std::min(ta.w, ta.h) >= _settings_game.station.station_spread) return nullptr; uint max_dist = distant_join ? _settings_game.station.station_spread - std::min(ta.w, ta.h) : 1; @@ -2556,7 +2556,7 @@ index ecc7ea77c..221be09c1 100644 return nullptr; } diff --git a/src/table/settings/game_settings.ini b/src/table/settings/game_settings.ini -index 79fac7513..f4b7258a0 100644 +index 79fac75136..f4b7258a08 100644 --- a/src/table/settings/game_settings.ini +++ b/src/table/settings/game_settings.ini @@ -419,3 +419,12 @@ var = gui.sg_new_nonstop @@ -2573,7 +2573,7 @@ index 79fac7513..f4b7258a0 100644 +min = MIN_LAYER_COUNT_BITS +max = MAX_LAYER_COUNT_BITS diff --git a/src/table/settings/gui_settings.ini b/src/table/settings/gui_settings.ini -index ad18f8318..5b1a63001 100644 +index ad18f83188..5b1a63001e 100644 --- a/src/table/settings/gui_settings.ini +++ b/src/table/settings/gui_settings.ini @@ -848,3 +848,11 @@ min = 1 @@ -2589,7 +2589,7 @@ index ad18f8318..5b1a63001 100644 +max = UINT32_MAX +proc = RedrawScreen diff --git a/src/terraform_cmd.cpp b/src/terraform_cmd.cpp -index eaed9e71c..4778fd050 100644 +index 21df5ccbe3..d1ed0d7603 100644 --- a/src/terraform_cmd.cpp +++ b/src/terraform_cmd.cpp @@ -8,6 +8,7 @@ @@ -2600,19 +2600,19 @@ index eaed9e71c..4778fd050 100644 #include "command_func.h" #include "tunnel_map.h" #include "bridge_map.h" -@@ -252,6 +253,10 @@ CommandCost CmdTerraformLand(TileIndex tile, DoCommandFlag flags, uint32 p1, uin +@@ -248,6 +249,10 @@ std::tuple<CommandCost, Money, TileIndex> CmdTerraformLand(DoCommandFlag flags, if (z_N > z_min) tileh |= SLOPE_N; if (pass == 0) { + /* Terrafrom enable only top layer */ + if (IsUnderground(tile)) { -+ return_cmd_error(STR_ERROR_UNDERGROUND_CAN_T_TERRAFORM); ++ return { CommandCost(STR_ERROR_UNDERGROUND_CAN_T_TERRAFORM), 0, tile }; + } /* Check if bridge would take damage */ if (IsBridgeAbove(t)) { int bridge_height = GetBridgeHeight(GetSouthernBridgeEnd(t)); diff --git a/src/tgp.cpp b/src/tgp.cpp -index 511b998e2..eef52853e 100644 +index 511b998e23..eef52853eb 100644 --- a/src/tgp.cpp +++ b/src/tgp.cpp @@ -12,6 +12,7 @@ @@ -2658,7 +2658,7 @@ index 511b998e2..eef52853e 100644 int max_height = H2I(TGPGetMaxHeight()); diff --git a/src/tile_map.h b/src/tile_map.h -index b6c715e8a..c191ab904 100644 +index b6c715e8a8..c191ab9042 100644 --- a/src/tile_map.h +++ b/src/tile_map.h @@ -14,6 +14,7 @@ @@ -2693,7 +2693,7 @@ index b6c715e8a..c191ab904 100644 } diff --git a/src/tilearea_type.h b/src/tilearea_type.h -index e6d9bad60..a256832f5 100644 +index b6af998a76..c6af2dc386 100644 --- a/src/tilearea_type.h +++ b/src/tilearea_type.h @@ -44,6 +44,16 @@ struct OrthogonalTileArea { @@ -2714,7 +2714,7 @@ index e6d9bad60..a256832f5 100644 bool Contains(TileIndex tile) const; diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp -index f5b3fa3b7..f4185426d 100644 +index 13c52f2b4e..a9d865d811 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -11,7 +11,10 @@ @@ -2736,7 +2736,7 @@ index f5b3fa3b7..f4185426d 100644 #include "strings_func.h" #include "company_func.h" #include "company_gui.h" -@@ -995,6 +999,39 @@ static CallBackFunction MenuClickForest(int index) +@@ -996,6 +1000,39 @@ static CallBackFunction MenuClickForest(int index) return CBF_NONE; } @@ -2776,7 +2776,7 @@ index f5b3fa3b7..f4185426d 100644 /* --- Music button menu --- */ static CallBackFunction ToolbarMusicClick(Window *w) -@@ -1305,9 +1342,10 @@ static MenuClickedProc * const _menu_clicked_procs[] = { +@@ -1306,9 +1343,10 @@ static MenuClickedProc * const _menu_clicked_procs[] = { MenuClickBuildWater, // 24 MenuClickBuildAir, // 25 MenuClickForest, // 26 @@ -2790,7 +2790,7 @@ index f5b3fa3b7..f4185426d 100644 }; /** Full blown container to make it behave exactly as we want :) */ -@@ -1472,7 +1510,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { +@@ -1473,7 +1511,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { const byte *GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count) const override { static const uint SMALLEST_ARRANGEMENT = 14; @@ -2799,7 +2799,7 @@ index f5b3fa3b7..f4185426d 100644 /* The number of buttons of each row of the toolbar should match the number of items which we want to be visible. * The total number of buttons should be equal to arrangable_count * 2. -@@ -1739,6 +1777,67 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { +@@ -1740,6 +1778,67 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { WID_TN_ZOOM_OUT, WID_TN_SWITCH_BAR, }; @@ -2867,7 +2867,7 @@ index f5b3fa3b7..f4185426d 100644 static const byte arrange_all[] = { WID_TN_PAUSE, WID_TN_FAST_FORWARD, -@@ -1767,6 +1866,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { +@@ -1768,6 +1867,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { WID_TN_WATER, WID_TN_AIR, WID_TN_LANDSCAPE, @@ -2875,7 +2875,7 @@ index f5b3fa3b7..f4185426d 100644 WID_TN_MUSIC_SOUND, WID_TN_MESSAGES, WID_TN_HELP -@@ -1781,7 +1881,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { +@@ -1782,7 +1882,7 @@ class NWidgetMainToolbarContainer : public NWidgetToolbarContainer { } /* Introduce the split toolbar */ @@ -2884,7 +2884,7 @@ index f5b3fa3b7..f4185426d 100644 button_count = arrangable_count = full_buttons; spacer_count = this->spacers; -@@ -1938,6 +2038,7 @@ static ToolbarButtonProc * const _toolbar_button_procs[] = { +@@ -1939,6 +2039,7 @@ static ToolbarButtonProc * const _toolbar_button_procs[] = { ToolbarBuildWaterClick, ToolbarBuildAirClick, ToolbarForestClick, @@ -2892,7 +2892,7 @@ index f5b3fa3b7..f4185426d 100644 ToolbarMusicClick, ToolbarNewspaperClick, ToolbarHelpClick, -@@ -2186,6 +2287,7 @@ static NWidgetBase *MakeMainToolbar(int *biggest_index) +@@ -2187,6 +2288,7 @@ static NWidgetBase *MakeMainToolbar(int *biggest_index) SPR_IMG_BUILDWATER, // WID_TN_WATER SPR_IMG_BUILDAIR, // WID_TN_AIR SPR_IMG_LANDSCAPING, // WID_TN_LANDSCAPE @@ -2901,7 +2901,7 @@ index f5b3fa3b7..f4185426d 100644 SPR_IMG_MESSAGES, // WID_TN_MESSAGES SPR_IMG_QUERY, // WID_TN_HELP diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp -index 2863b4d6f..e2f8d65b4 100644 +index 405a83ccee..ade909a6ba 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -12,6 +12,7 @@ @@ -2912,7 +2912,7 @@ index 2863b4d6f..e2f8d65b4 100644 #include "viewport_func.h" #include "viewport_kdtree.h" #include "cmd_helper.h" -@@ -2157,7 +2158,7 @@ static Town *CreateRandomTown(uint attempts, uint32 townnameparts, TownSize size +@@ -2155,7 +2156,7 @@ static Town *CreateRandomTown(uint attempts, uint32 townnameparts, TownSize size do { /* Generate a tile index not too close from the edge */ @@ -2921,7 +2921,7 @@ index 2863b4d6f..e2f8d65b4 100644 /* if we tried to place the town on water, slide it over onto * the nearest likely-looking spot */ -@@ -2330,6 +2331,9 @@ static inline bool CanBuildHouseHere(TileIndex tile, bool noslope) +@@ -2328,6 +2329,9 @@ static inline bool CanBuildHouseHere(TileIndex tile, bool noslope) Slope slope = GetTileSlope(tile); if ((noslope && slope != SLOPE_FLAT) || IsSteepSlope(slope)) return false; @@ -2931,7 +2931,7 @@ index 2863b4d6f..e2f8d65b4 100644 /* at least one RoadTypes allow building the house here? */ if (!RoadTypesAllowHouseHere(tile)) return false; -@@ -2765,6 +2769,8 @@ CommandCost CmdRenameTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 +@@ -2761,6 +2765,8 @@ CommandCost CmdRenameTown(DoCommandFlag flags, TownID town_id, const std::string InvalidateWindowData(WC_TOWN_DIRECTORY, 0, TDIWD_FORCE_RESORT); ClearAllStationCachedNames(); ClearAllIndustryCachedNames(); @@ -2941,7 +2941,7 @@ index 2863b4d6f..e2f8d65b4 100644 } return CommandCost(); diff --git a/src/tree_cmd.cpp b/src/tree_cmd.cpp -index 237b34fff..b3671bbfd 100644 +index c98758062f..d0fe4b157d 100644 --- a/src/tree_cmd.cpp +++ b/src/tree_cmd.cpp @@ -11,6 +11,7 @@ @@ -2952,7 +2952,7 @@ index 237b34fff..b3671bbfd 100644 #include "viewport_func.h" #include "command_func.h" #include "town.h" -@@ -72,7 +73,8 @@ static bool CanPlantTreesOnTile(TileIndex tile, bool allow_desert) +@@ -74,7 +75,8 @@ static bool CanPlantTreesOnTile(TileIndex tile, bool allow_desert) case MP_CLEAR: return !IsBridgeAbove(tile) && !IsClearGround(tile, CLEAR_FIELDS) && GetRawClearGround(tile) != CLEAR_ROCKS && @@ -2962,7 +2962,7 @@ index 237b34fff..b3671bbfd 100644 default: return false; } -@@ -187,7 +189,7 @@ static void PlaceTree(TileIndex tile, uint32 r) +@@ -189,7 +191,7 @@ static void PlaceTree(TileIndex tile, uint32 r) static void PlaceTreeGroups(uint num_groups) { do { @@ -2971,7 +2971,7 @@ index 237b34fff..b3671bbfd 100644 for (uint i = 0; i < DEFAULT_TREE_STEPS; i++) { uint32 r = Random(); -@@ -252,7 +254,7 @@ void PlaceTreesRandomly() +@@ -254,7 +256,7 @@ void PlaceTreesRandomly() if (_game_mode == GM_EDITOR) i /= EDITOR_TREE_DIV; do { uint32 r = Random(); @@ -2980,7 +2980,7 @@ index 237b34fff..b3671bbfd 100644 IncreaseGeneratingWorldProgress(GWP_TREE); -@@ -281,7 +283,7 @@ void PlaceTreesRandomly() +@@ -283,7 +285,7 @@ void PlaceTreesRandomly() do { uint32 r = Random(); @@ -2989,13 +2989,13 @@ index 237b34fff..b3671bbfd 100644 IncreaseGeneratingWorldProgress(GWP_TREE); -@@ -392,6 +394,10 @@ CommandCost CmdPlantTree(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 - const byte tree_to_plant = GB(p1, 0, 8); // We cannot use Extract as min and max are climate specific. +@@ -392,6 +394,10 @@ CommandCost CmdPlantTree(DoCommandFlag flags, TileIndex tile, TileIndex start_ti + CommandCost cost(EXPENSES_OTHER); - if (p2 >= MapSize()) return CMD_ERROR; + if (start_tile >= MapSize()) return CMD_ERROR; + + /* tree only top layer */ -+ if (IsUnderground(p2)) return CMD_ERROR; ++ if (IsUnderground(start_tile)) return CMD_ERROR; + /* Check the tree type within the current climate */ if (tree_to_plant != TREE_INVALID && !IsInsideBS(tree_to_plant, _tree_base_by_landscape[_settings_game.game_creation.landscape], _tree_count_by_landscape[_settings_game.game_creation.landscape])) return CMD_ERROR; @@ -3019,7 +3019,7 @@ index 237b34fff..b3671bbfd 100644 PlantTreesOnTile(tile, tree, 0, 0); } diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp -index 5181dfdca..98aaf2771 100644 +index 543ac8b284..3e2d4206a4 100644 --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -13,6 +13,7 @@ @@ -3030,7 +3030,7 @@ index 5181dfdca..98aaf2771 100644 #include "viewport_func.h" #include "cmd_helper.h" #include "command_func.h" -@@ -309,6 +310,10 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u +@@ -303,6 +304,10 @@ CommandCost CmdBuildBridge(DoCommandFlag flags, TileIndex tile_end, TileIndex ti return_cmd_error(STR_ERROR_CAN_T_START_AND_END_ON); } @@ -3041,7 +3041,7 @@ index 5181dfdca..98aaf2771 100644 Axis direction; if (TileX(tile_start) == TileX(tile_end)) { direction = AXIS_Y; -@@ -702,6 +707,12 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, DoCommandFlag flags, uint32 p1, +@@ -693,6 +698,12 @@ CommandCost CmdBuildTunnel(DoCommandFlag flags, TileIndex start_tile, TransportT for (;;) { end_tile += delta; if (!IsValidTile(end_tile)) return_cmd_error(STR_ERROR_TUNNEL_THROUGH_MAP_BORDER); @@ -3056,7 +3056,7 @@ index 5181dfdca..98aaf2771 100644 if (start_z == end_z) break; diff --git a/src/underground_gui.cpp b/src/underground_gui.cpp new file mode 100644 -index 000000000..be4ebe4e5 +index 0000000000..be4ebe4e5d --- /dev/null +++ b/src/underground_gui.cpp @@ -0,0 +1,321 @@ @@ -3383,7 +3383,7 @@ index 000000000..be4ebe4e5 +} diff --git a/src/underground_gui.h b/src/underground_gui.h new file mode 100644 -index 000000000..81b119545 +index 0000000000..81b119545e --- /dev/null +++ b/src/underground_gui.h @@ -0,0 +1,19 @@ @@ -3407,7 +3407,7 @@ index 000000000..81b119545 + +#endif /* UNDERGROUND_GUI_H */ diff --git a/src/vehicle.cpp b/src/vehicle.cpp -index 30e1c477c..053337a78 100644 +index 120c4a259f..0e338737c3 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -13,6 +13,7 @@ @@ -3427,7 +3427,7 @@ index 30e1c477c..053337a78 100644 l <= v->coord.right + xb && t <= v->coord.bottom + yb && diff --git a/src/viewport.cpp b/src/viewport.cpp -index b3ccba2b5..5f88aa38c 100644 +index 69db0aeab5..d8fd85b5a8 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -62,6 +62,8 @@ @@ -3439,7 +3439,7 @@ index b3ccba2b5..5f88aa38c 100644 #include "viewport_func.h" #include "station_base.h" #include "waypoint_base.h" -@@ -1246,24 +1248,27 @@ static void ViewportAddLandscape() +@@ -1247,24 +1249,27 @@ static void ViewportAddLandscape() int min_visible_height = viewport_y - (_vd.dpi.top + _vd.dpi.height); bool tile_visible = min_visible_height <= 0; @@ -3484,7 +3484,7 @@ index b3ccba2b5..5f88aa38c 100644 } if (tile_visible) { -@@ -1737,6 +1742,9 @@ void ViewportDoDraw(const Viewport *vp, int left, int top, int right, int bottom +@@ -1738,6 +1743,9 @@ void ViewportDoDraw(const Viewport *vp, int left, int top, int right, int bottom _vd.dpi.dst_ptr = BlitterFactory::GetCurrentBlitter()->MoveTo(old_dpi->dst_ptr, x - old_dpi->left, y - old_dpi->top); @@ -3495,7 +3495,7 @@ index b3ccba2b5..5f88aa38c 100644 ViewportAddVehicles(&_vd.dpi); diff --git a/src/viewport_func.h b/src/viewport_func.h -index 58e1706eb..d8f2036aa 100644 +index 58e1706eb6..d8f2036aaa 100644 --- a/src/viewport_func.h +++ b/src/viewport_func.h @@ -31,6 +31,7 @@ bool MarkAllViewportsDirty(int left, int top, int right, int bottom); @@ -3507,7 +3507,7 @@ index 58e1706eb..d8f2036aa 100644 void FixTitleGameZoom(int zoom_adjust = 0); void HandleZoomMessage(Window *w, const Viewport *vp, byte widget_zoom_in, byte widget_zoom_out); diff --git a/src/viewport_gui.cpp b/src/viewport_gui.cpp -index 5047f04f3..3c02f9ab8 100644 +index 5047f04f3f..3c02f9ab8b 100644 --- a/src/viewport_gui.cpp +++ b/src/viewport_gui.cpp @@ -14,6 +14,7 @@ @@ -3532,7 +3532,7 @@ index 5047f04f3..3c02f9ab8 100644 } diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp -index ba09b415a..a87cf657d 100644 +index c02a1e9b4f..be95c096e5 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -10,6 +10,7 @@ @@ -3543,7 +3543,7 @@ index ba09b415a..a87cf657d 100644 #include "viewport_func.h" #include "command_func.h" #include "town.h" -@@ -475,6 +476,11 @@ CommandCost CmdBuildCanal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 +@@ -468,6 +469,11 @@ CommandCost CmdBuildCanal(DoCommandFlag flags, TileIndex tile, TileIndex start_t return_cmd_error(STR_ERROR_FLAT_LAND_REQUIRED); } @@ -3555,7 +3555,7 @@ index ba09b415a..a87cf657d 100644 bool water = IsWaterTile(current_tile); /* Outside the editor, prevent building canals over your own or OWNER_NONE owned canals */ -@@ -1110,6 +1116,9 @@ void DoFloodTile(TileIndex target) +@@ -1103,6 +1109,9 @@ void DoFloodTile(TileIndex target) { assert(!IsTileType(target, MP_WATER)); @@ -3565,7 +3565,7 @@ index ba09b415a..a87cf657d 100644 bool flooded = false; // Will be set to true if something is changed. Backup<CompanyID> cur_company(_current_company, OWNER_WATER, FILE_LINE); -@@ -1268,7 +1277,7 @@ void ConvertGroundTilesIntoWaterTiles() +@@ -1261,7 +1270,7 @@ void ConvertGroundTilesIntoWaterTiles() for (TileIndex tile = 0; tile < MapSize(); ++tile) { Slope slope = GetTileSlope(tile, &z); @@ -3575,7 +3575,7 @@ index ba09b415a..a87cf657d 100644 * and make shore, as that looks much better * during the generation. */ diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt -index 5586870a3..c5d57cebe 100644 +index 5586870a3a..c5d57cebee 100644 --- a/src/widgets/CMakeLists.txt +++ b/src/widgets/CMakeLists.txt @@ -57,6 +57,7 @@ add_files( @@ -3587,7 +3587,7 @@ index 5586870a3..c5d57cebe 100644 viewport_widget.h waypoint_widget.h diff --git a/src/widgets/genworld_widget.h b/src/widgets/genworld_widget.h -index 6644dc1aa..a059a2953 100644 +index 6644dc1aa7..a059a2953b 100644 --- a/src/widgets/genworld_widget.h +++ b/src/widgets/genworld_widget.h @@ -19,6 +19,7 @@ enum GenerateLandscapeWidgets { @@ -3607,7 +3607,7 @@ index 6644dc1aa..a059a2953 100644 WID_CS_START_DATE_TEXT, ///< Clickable start date value. WID_CS_START_DATE_UP, ///< Increase start year (start later). diff --git a/src/widgets/toolbar_widget.h b/src/widgets/toolbar_widget.h -index d68de4970..0b4e53227 100644 +index d68de49700..0b4e53227f 100644 --- a/src/widgets/toolbar_widget.h +++ b/src/widgets/toolbar_widget.h @@ -41,6 +41,7 @@ enum ToolbarNormalWidgets { @@ -3620,7 +3620,7 @@ index d68de4970..0b4e53227 100644 WID_TN_HELP, ///< Help menu. diff --git a/src/widgets/underground_widget.h b/src/widgets/underground_widget.h new file mode 100644 -index 000000000..522c9db8b +index 0000000000..522c9db8bf --- /dev/null +++ b/src/widgets/underground_widget.h @@ -0,0 +1,21 @@ @@ -3646,7 +3646,7 @@ index 000000000..522c9db8b + +#endif /* WIDGETS_UNDERGROUND_WIDGET_H */ diff --git a/src/window_type.h b/src/window_type.h -index 6eb9573b6..cfaa1e878 100644 +index 6eb9573b60..cfaa1e8789 100644 --- a/src/window_type.h +++ b/src/window_type.h @@ -440,6 +440,12 @@ enum WindowClass { |