From 2d4c5ea66864e4b53d75decaa14ffafe643aa8ed Mon Sep 17 00:00:00 2001 From: yexo Date: Mon, 13 Sep 2010 13:27:29 +0000 Subject: (svn r20797) -Fix: disable houses without a size that are available according to their building flags --- src/house.h | 3 ++- src/newgrf.cpp | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/house.h b/src/house.h index f99d7df6d..e1ecce25b 100644 --- a/src/house.h +++ b/src/house.h @@ -80,7 +80,8 @@ enum HouseZones { ///< Bit Value Meaning HZ_TEMP = 0x1000, ///< 12 1000 can appear in temperate climate HZ_SUBARTC_BELOW = 0x2000, ///< 13 2000 can appear in sub-arctic climate below the snow line HZ_SUBTROPIC = 0x4000, ///< 14 4000 can appear in subtropical climate - HZ_TOYLND = 0x8000 ///< 15 8000 can appear in toyland climate + HZ_TOYLND = 0x8000, ///< 15 8000 can appear in toyland climate + HZ_CLIMALL = 0xF800, ///< Bitmask of all climate bits }; DECLARE_ENUM_AS_BIT_SET(HouseZones) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 04ece0938..b20b297a0 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -7318,6 +7318,13 @@ static bool IsHouseSpecValid(HouseSpec *hs, const HouseSpec *next1, const HouseS return false; } + /* Make sure that additional parts of multitile houses are not available. */ + if ((hs->building_flags & BUILDING_HAS_1_TILE) == 0 && (hs->building_availability & HZ_ZONALL) != 0 && (hs->building_availability & HZ_CLIMALL) != 0) { + hs->enabled = false; + if (filename != NULL) DEBUG(grf, 1, "FinaliseHouseArray: %s defines house %d without a size but marked it as available. Disabling house.", filename, hs->grf_prop.local_id); + return false; + } + return true; } -- cgit v1.2.3-70-g09d2