mirror of https://github.com/OpenTTD/OpenTTD
(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 operationsrelease/0.6
parent
8c5814156f
commit
9402d4054a
|
@ -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
|
!(HasBit(indspec->callback_flags, CBM_IND_MONTHLYPROD_CHANGE) || HasBit(indspec->callback_flags, CBM_IND_PRODUCTION_CHANGE)); // production change callbacks
|
||||||
byte div = 0;
|
byte div = 0;
|
||||||
byte mul = 0;
|
byte mul = 0;
|
||||||
|
int8 increment = 0;
|
||||||
|
|
||||||
if (HasBit(indspec->callback_flags, monthly ? CBM_IND_MONTHLYPROD_CHANGE : CBM_IND_PRODUCTION_CHANGE)) {
|
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);
|
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 0x8: div = res - 0x3; break; // Divide production by 32
|
||||||
case 0x9: case 0xA: case 0xB: // Multiply production by 4, 8, 16
|
case 0x9: case 0xA: case 0xB: // Multiply production by 4, 8, 16
|
||||||
case 0xC: mul = res - 0x7; break; // Multiply production by 32
|
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 */
|
/* Close if needed and allowed */
|
||||||
if (closeit && !CheckIndustryCloseDownProtection(i->type)) {
|
if (closeit && !CheckIndustryCloseDownProtection(i->type)) {
|
||||||
i->prod_level = 0;
|
i->prod_level = 0;
|
||||||
|
|
Loading…
Reference in New Issue