diff options
author | SamuXarick <43006711+SamuXarick@users.noreply.github.com> | 2021-10-03 11:54:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-03 12:54:19 +0200 |
commit | e404d16929991d1eddd9d37b859d3813be7e18ed (patch) | |
tree | 0c6de857141d311dd827db95a9fbd39dee501128 | |
parent | e4ad6329891c9235336649ef4412b2ce0a073af8 (diff) | |
download | openttd-e404d16929991d1eddd9d37b859d3813be7e18ed.tar.xz |
Fix #9591: Update station docking tiles upon placing a water object on a docking tile (#9594)
-rw-r--r-- | src/object_cmd.cpp | 3 | ||||
-rw-r--r-- | src/saveload/afterload.cpp | 4 | ||||
-rw-r--r-- | src/saveload/saveload.h | 3 |
3 files changed, 7 insertions, 3 deletions
diff --git a/src/object_cmd.cpp b/src/object_cmd.cpp index 14645f93d..cd080ca53 100644 --- a/src/object_cmd.cpp +++ b/src/object_cmd.cpp @@ -32,6 +32,7 @@ #include "date_func.h" #include "newgrf_debug.h" #include "vehicle_func.h" +#include "station_func.h" #include "table/strings.h" #include "table/object_land.h" @@ -121,7 +122,9 @@ void BuildObject(ObjectType type, TileIndex tile, CompanyID owner, Town *town, u Company::Get(owner)->infrastructure.water++; DirtyCompanyInfrastructureWindows(owner); } + bool remove = IsDockingTile(t); MakeObject(t, owner, o->index, wc, Random()); + if (remove) RemoveDockingTile(t); MarkTileDirtyByTile(t); } diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 02a221bb6..6a42ea81c 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -3106,8 +3106,8 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(SLV_DOCK_DOCKINGTILES)) { - /* All tiles around docks may be docking tiles. */ + if (IsSavegameVersionBefore(SLV_REPAIR_OBJECT_DOCKING_TILES)) { + /* Placing objects on docking tiles was not updating adjacent station's docking tiles. */ for (Station *st : Station::Iterate()) { if (st->ship_station.tile != INVALID_TILE) UpdateStationDockingTiles(st); } diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index 382d77f1a..0d4e0fb98 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -338,7 +338,8 @@ enum SaveLoadVersion : uint16 { SLV_TABLE_CHUNKS, ///< 295 PR#9322 Introduction of CH_TABLE and CH_SPARSE_TABLE. SLV_SCRIPT_INT64, ///< 296 PR#9415 SQInteger is 64bit but was saved as 32bit. SLV_LINKGRAPH_TRAVEL_TIME, ///< 297 PR#9457 v12.0-RC1 Store travel time in the linkgraph. - SLV_DOCK_DOCKINGTILES, ///< 298 PR#9578 v12.0 All tiles around docks may be docking tiles. + SLV_DOCK_DOCKINGTILES, ///< 298 PR#9578 All tiles around docks may be docking tiles. + SLV_REPAIR_OBJECT_DOCKING_TILES, ///< 299 PR#9594 v12.0 Fixing issue with docking tiles overlapping objects. SL_MAX_VERSION, ///< Highest possible saveload version }; |