From e26d14c5ef5710e5f4b86f53d913e40ca032d5cd Mon Sep 17 00:00:00 2001 From: J0anJosep Date: Sun, 21 Feb 2021 22:17:13 +0100 Subject: [PATCH] Change: Flood trains inside a train depot platform. --- src/water_cmd.cpp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index 235b111412..92a8d179b5 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -40,6 +40,9 @@ #include "water_cmd.h" #include "landscape_cmd.h" #include "pathfinder/water_regions.h" +#include "train.h" +#include "platform_func.h" +#include "pbs.h" #include "table/strings.h" @@ -1073,16 +1076,25 @@ static void FloodVehicles(TileIndex tile) return; } - if (!IsBridgeTile(tile)) { + if (IsBridgeTile(tile)) { + TileIndex end = GetOtherBridgeEnd(tile); + z = GetBridgePixelHeight(tile); + + FindVehicleOnPos(tile, &z, &FloodVehicleProc); + FindVehicleOnPos(end, &z, &FloodVehicleProc); + } else if (IsExtendedRailDepotTile(tile)) { + /* Free reserved path. */ + if (HasDepotReservation(tile)) { + Train *v = GetTrainForReservation(tile, GetRailDepotTrack(tile)); + if (v != nullptr) FreeTrainTrackReservation(v); + } + /* Crash trains on platform. */ + for (TileIndex t : GetPlatformTileArea(tile)) { + FindVehicleOnPos(t, &z, &FloodVehicleProc); + } + } else { FindVehicleOnPos(tile, &z, &FloodVehicleProc); - return; } - - TileIndex end = GetOtherBridgeEnd(tile); - z = GetBridgePixelHeight(tile); - - FindVehicleOnPos(tile, &z, &FloodVehicleProc); - FindVehicleOnPos(end, &z, &FloodVehicleProc); } /**