From 83d861be26a862bea19aad7f0b2958d479fa7d82 Mon Sep 17 00:00:00 2001 From: SamuXarick <43006711+SamuXarick@users.noreply.github.com> Date: Thu, 31 Oct 2024 15:58:12 +0000 Subject: [PATCH] Fix: Missing water region invalidation after flooding a half tile with rail in the highest corner Invalidate water region when any flood occurs. Convert a few magic numbers to their names. --- src/rail_cmd.cpp | 4 ++-- src/water_cmd.cpp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 11833a4b15..dabc8015f5 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -773,13 +773,13 @@ bool FloodHalftile(TileIndex t) TrackBits lower_track = CornerToTrackBits(OppositeCorner(GetHighestSlopeCorner(tileh))); TrackBits to_remove = lower_track & rail_bits; - if (to_remove != 0) { + if (to_remove != TRACK_BIT_NONE) { Backup cur_company(_current_company, OWNER_WATER); flooded = Command::Do(DC_EXEC, t, FindFirstTrack(to_remove)).Succeeded(); cur_company.Restore(); if (!flooded) return flooded; // not yet floodable rail_bits = rail_bits & ~to_remove; - if (rail_bits == 0) { + if (rail_bits == TRACK_BIT_NONE) { MakeShore(t); MarkTileDirtyByTile(t); return flooded; diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index f15c15666b..27773d30c7 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -1187,6 +1187,7 @@ static void DoFloodTile(TileIndex target) UpdateSignalsInBuffer(); if (IsPossibleDockingTile(target)) CheckForDockingTile(target); + InvalidateWaterRegion(target); } cur_company.Restore();