From 49484eedcada3c0d8cadb1f71333940388507aa1 Mon Sep 17 00:00:00 2001 From: glx Date: Thu, 1 May 2008 22:51:53 +0000 Subject: [PATCH] (svn r12933) -Fix: minor errors related to industries accepted/produced cargo --- src/industry_cmd.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 8a33c20d1b..80228c7fd9 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -1391,7 +1391,7 @@ static bool CheckIfFarEnoughFromIndustry(TileIndex tile, int type) const IndustrySpec *indspec = GetIndustrySpec(type); const Industry *i; - if (_patches.same_industry_close && indspec->accepts_cargo[0] == CT_INVALID) + if (_patches.same_industry_close && indspec->IsRawIndustry()) /* Allow primary industries to be placed close to any other industry */ return true; @@ -1401,7 +1401,7 @@ static bool CheckIfFarEnoughFromIndustry(TileIndex tile, int type) /* check if an industry that accepts the same goods is nearby */ if (in_low_distance && - indspec->accepts_cargo[0] != CT_INVALID && // not a primary industry? + !indspec->IsRawIndustry() && // not a primary industry? indspec->accepts_cargo[0] == i->accepts_cargo[0] && ( /* at least one of those options must be true */ _game_mode != GM_EDITOR || // editor must not be stopped @@ -1904,7 +1904,8 @@ static void CanCargoServiceIndustry(CargoID cargo, Industry *ind, bool *c_accept const IndustrySpec *indspec = GetIndustrySpec(ind->type); /* Check for acceptance of cargo */ - for (uint j = 0; j < lengthof(ind->accepts_cargo) && ind->accepts_cargo[j] != CT_INVALID; j++) { + for (byte j = 0; j < lengthof(ind->accepts_cargo); j++) { + if (ind->accepts_cargo[j] == CT_INVALID) continue; if (cargo == ind->accepts_cargo[j]) { if (HasBit(indspec->callback_flags, CBM_IND_REFUSE_CARGO)) { uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO, @@ -1918,7 +1919,8 @@ static void CanCargoServiceIndustry(CargoID cargo, Industry *ind, bool *c_accept } /* Check for produced cargo */ - for (uint j = 0; j < lengthof(ind->produced_cargo) && ind->produced_cargo[j] != CT_INVALID; j++) { + for (byte j = 0; j < lengthof(ind->produced_cargo); j++) { + if (ind->produced_cargo[j] == CT_INVALID) continue; if (cargo == ind->produced_cargo[j]) { *c_produces = true; break; @@ -2080,7 +2082,8 @@ static void ChangeIndustryProduction(Industry *i, bool monthly) if (smooth_economy) { closeit = true; - for (byte j = 0; j < 2 && i->produced_cargo[j] != CT_INVALID; j++){ + for (byte j = 0; j < lengthof(i->produced_cargo); j++) { + if (i->produced_cargo[j] == CT_INVALID) continue; uint32 r = Random(); int old_prod, new_prod, percent; /* If over 60% is transported, mult is 1, else mult is -1. */