diff options
author | Patric Stout <truebrain@openttd.org> | 2021-08-31 14:31:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-31 14:31:37 +0200 |
commit | 2c05412d722903748bf928fd201b15cdad586a94 (patch) | |
tree | 0878e1a863cb7ca20215eadee20ac0fe68c893f9 /src/town_cmd.cpp | |
parent | 69e9acd70285feacf4ab44603d4f73b1f5bd0a78 (diff) | |
download | openttd-2c05412d722903748bf928fd201b15cdad586a94.tar.xz |
Fix #9407: desync when founding a town nearby a station (#9526)
"stations_near" wasn't updated when founding a town near
a station. As this variable is not saved, any client joining
after the town is founded has a different value for
"stations_near", potentially causing desyncs.
As the intention of this if() statement was to skip an expensive
calculation when there are clearly no stations, better to move
that check inside the function, so other places also enjoy
the speedup.
Diffstat (limited to 'src/town_cmd.cpp')
-rw-r--r-- | src/town_cmd.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index d53cd5783..2863b4d6f 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -2310,12 +2310,10 @@ static void MakeTownHouse(TileIndex t, Town *town, byte counter, byte stage, Hou if (size & BUILDING_2_TILES_X) ClearMakeHouseTile(t + TileDiffXY(1, 0), town, counter, stage, ++type, random_bits); if (size & BUILDING_HAS_4_TILES) ClearMakeHouseTile(t + TileDiffXY(1, 1), town, counter, stage, ++type, random_bits); - if (!_generating_world) { - ForAllStationsAroundTiles(TileArea(t, (size & BUILDING_2_TILES_X) ? 2 : 1, (size & BUILDING_2_TILES_Y) ? 2 : 1), [town](Station *st, TileIndex tile) { - town->stations_near.insert(st); - return true; - }); - } + ForAllStationsAroundTiles(TileArea(t, (size & BUILDING_2_TILES_X) ? 2 : 1, (size & BUILDING_2_TILES_Y) ? 2 : 1), [town](Station *st, TileIndex tile) { + town->stations_near.insert(st); + return true; + }); } |