From 9402d4054ab4740ddf5758ed5bf0f379a75f00ea Mon Sep 17 00:00:00 2001 From: belugas Date: Tue, 27 Nov 2007 04:16:08 +0000 Subject: (svn r11532) -Feature[newgrf]: Add decrement(0x0D) / increment(0x0E) production operations from result of production callback cb29/35. Only var 0x93 will be affected by these operations --- src/industry_cmd.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/industry_cmd.cpp') diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 05da2c9dc..28ff57720 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -2011,6 +2011,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly) !(HasBit(indspec->callback_flags, CBM_IND_MONTHLYPROD_CHANGE) || HasBit(indspec->callback_flags, CBM_IND_PRODUCTION_CHANGE)); // production change callbacks byte div = 0; byte mul = 0; + int8 increment = 0; if (HasBit(indspec->callback_flags, monthly ? CBM_IND_MONTHLYPROD_CHANGE : CBM_IND_PRODUCTION_CHANGE)) { uint16 res = GetIndustryCallback(monthly ? CBID_INDUSTRY_MONTHLYPROD_CHANGE : CBID_INDUSTRY_PRODUCTION_CHANGE, 0, Random(), i, i->type, i->xy); @@ -2032,6 +2033,10 @@ static void ChangeIndustryProduction(Industry *i, bool monthly) case 0x8: div = res - 0x3; break; // Divide production by 32 case 0x9: case 0xA: case 0xB: // Multiply production by 4, 8, 16 case 0xC: mul = res - 0x7; break; // Multiply production by 32 + case 0xD: // decrement production + case 0xE: // increment production + increment = res == 0x0D ? -1 : 1; + break; } } } @@ -2122,6 +2127,11 @@ static void ChangeIndustryProduction(Industry *i, bool monthly) } } + if (increment != 0) { + i->prod_level = ClampU(i->prod_level + increment, 4, 0x80); + if (i->prod_level == 4) closeit = true; + } + /* Close if needed and allowed */ if (closeit && !CheckIndustryCloseDownProtection(i->type)) { i->prod_level = 0; -- cgit v1.2.3-70-g09d2