Mercurial > hg > openttd
changeset 13348:0e54bfff3730 draft
(svn r17857) -Fix (r10442): [NewGRF] 'subtract-in' is also signed for production callback version 0.
author | frosch <frosch@openttd.org> |
---|---|
date | Sat, 24 Oct 2009 18:51:21 +0000 |
parents | 177cb77a3213 |
children | 78eae1f8273b |
files | src/newgrf.cpp src/newgrf_industries.cpp src/newgrf_spritegroup.h |
diffstat | 3 files changed, 7 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -2966,15 +2966,15 @@ group->version = type; if (type == 0) { for (uint i = 0; i < 3; i++) { - group->substract_input[i] = grf_load_word(&buf); + group->subtract_input[i] = (int16)grf_load_word(&buf); // signed } for (uint i = 0; i < 2; i++) { - group->add_output[i] = grf_load_word(&buf); + group->add_output[i] = grf_load_word(&buf); // unsigned } group->again = grf_load_byte(&buf); } else { for (uint i = 0; i < 3; i++) { - group->substract_input[i] = grf_load_byte(&buf); + group->subtract_input[i] = grf_load_byte(&buf); } for (uint i = 0; i < 2; i++) { group->add_output[i] = grf_load_byte(&buf);
--- a/src/newgrf_industries.cpp +++ b/src/newgrf_industries.cpp @@ -502,7 +502,7 @@ return true; } -static int32 DerefIndProd(uint field, bool use_register) +static int32 DerefIndProd(int field, bool use_register) { return use_register ? (int32)GetRegister(field) : field; } @@ -543,7 +543,7 @@ bool deref = (group->version == 1); for (uint i = 0; i < 3; i++) { - ind->incoming_cargo_waiting[i] = Clamp(ind->incoming_cargo_waiting[i] - DerefIndProd(group->substract_input[i], deref) * multiplier, 0, 0xFFFF); + ind->incoming_cargo_waiting[i] = Clamp(ind->incoming_cargo_waiting[i] - DerefIndProd(group->subtract_input[i], deref) * multiplier, 0, 0xFFFF); } for (uint i = 0; i < 2; i++) { ind->produced_cargo_waiting[i] = Clamp(ind->produced_cargo_waiting[i] + max(DerefIndProd(group->add_output[i], deref), 0) * multiplier, 0, 0xFFFF);
--- a/src/newgrf_spritegroup.h +++ b/src/newgrf_spritegroup.h @@ -279,8 +279,8 @@ IndustryProductionSpriteGroup() : SpriteGroup(SGT_INDUSTRY_PRODUCTION) {} uint8 version; - uint16 substract_input[3]; - uint16 add_output[2]; + int16 subtract_input[3]; // signed + uint16 add_output[2]; // unsigned uint8 again; };