From f1a96c557726899caea40b94c8e3a8d168c98788 Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 3 Mar 2009 22:46:08 +0000 Subject: [PATCH] (svn r15604) -Fix [FS#2661]: towns would only build houses where the grid would not be, even when they aren't allowed to build roads and the user 'implements' another layout. --- src/town_cmd.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 6039d1040b..fdb8469365 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -1800,6 +1800,9 @@ static bool CheckFree2x2Area(TileIndex tile, TownID town, uint z, bool noslope) */ static inline bool TownLayoutAllowsHouseHere(Town *t, TileIndex tile) { + /* Allow towns everywhere when we don't build roads */ + if (!_settings_game.economy.allow_town_roads && !_generating_world) return true; + TileIndexDiffC grid_pos = TileIndexToTileIndexDiffC(t->xy, tile); switch (t->layout) { @@ -1828,6 +1831,9 @@ static inline bool TownLayoutAllowsHouseHere(Town *t, TileIndex tile) */ static inline bool TownLayoutAllows2x2HouseHere(Town *t, TileIndex tile) { + /* Allow towns everywhere when we don't build roads */ + if (!_settings_game.economy.allow_town_roads && !_generating_world) return true; + /* MapSize() is sure dividable by both MapSizeX() and MapSizeY(), * so to do only one memory access, use MapSize() */ uint dx = MapSize() + TileX(t->xy) - TileX(tile);