mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-28 00:49:11 +00:00
Fix #10638: Incorrect water infra total when building canal over object
In the case where the object is on an unowned canal tile and the new canal tile is owned
This commit is contained in:
committed by
Loïc Guilloux
parent
da20e0f6e6
commit
08a5637f98
@@ -475,6 +475,14 @@ CommandCost CmdBuildCanal(DoCommandFlag flags, TileIndex tile, TileIndex start_t
|
||||
if (!water) cost.AddCost(ret);
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
if (IsTileType(current_tile, MP_WATER) && IsCanal(current_tile)) {
|
||||
Owner owner = GetTileOwner(current_tile);
|
||||
if (Company::IsValidID(owner)) {
|
||||
Company::Get(owner)->infrastructure.water--;
|
||||
DirtyCompanyInfrastructureWindows(owner);
|
||||
}
|
||||
}
|
||||
|
||||
switch (wc) {
|
||||
case WATER_CLASS_RIVER:
|
||||
MakeRiver(current_tile, Random());
|
||||
@@ -492,14 +500,11 @@ CommandCost CmdBuildCanal(DoCommandFlag flags, TileIndex tile, TileIndex start_t
|
||||
FALLTHROUGH;
|
||||
|
||||
default:
|
||||
/* If we overbuild a water object with a canal, don't update the infrastructure total. */
|
||||
bool is_existing_canal = IsTileType(current_tile, MP_WATER) && IsCanal(current_tile);
|
||||
if (Company::IsValidID(_current_company) && !is_existing_canal) {
|
||||
MakeCanal(current_tile, _current_company, Random());
|
||||
if (Company::IsValidID(_current_company)) {
|
||||
Company::Get(_current_company)->infrastructure.water++;
|
||||
DirtyCompanyInfrastructureWindows(_current_company);
|
||||
}
|
||||
|
||||
MakeCanal(current_tile, _current_company, Random());
|
||||
break;
|
||||
}
|
||||
MarkTileDirtyByTile(current_tile);
|
||||
|
Reference in New Issue
Block a user