From e4091f16d0dcc1bcd7330d8fe117bf4019c5304f Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 5 Sep 2010 19:46:04 +0000 Subject: (svn r20751) -Fix: IndustryCargoesWindow::HousesCanAccept() did not check climate-availability of houses. --- src/industry_gui.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index 3720a7c5c..b29f1186d 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -2034,12 +2034,20 @@ struct IndustryCargoesWindow : public Window { */ static bool HousesCanAccept(const CargoID *cargoes, uint length) { + HouseZones climate_mask; + switch (_settings_game.game_creation.landscape) { + case LT_TEMPERATE: climate_mask = HZ_TEMP; break; + case LT_ARCTIC: climate_mask = HZ_SUBARTC_ABOVE | HZ_SUBARTC_BELOW; break; + case LT_TROPIC: climate_mask = HZ_SUBTROPIC; break; + case LT_TOYLAND: climate_mask = HZ_TOYLND; break; + default: NOT_REACHED(); + } for (uint i = 0; i < length; i++) { if (cargoes[i] == INVALID_CARGO) continue; for (uint h = 0; h < HOUSE_MAX; h++) { HouseSpec *hs = HouseSpec::Get(h); - if (!hs->enabled) continue; + if (!hs->enabled || !(hs->building_availability & climate_mask)) continue; for (uint j = 0; j < lengthof(hs->accepts_cargo); j++) { if (cargoes[i] == hs->accepts_cargo[j]) return true; -- cgit v1.2.3-54-g00ecf