diff options
-rw-r--r-- | engines/lilliput/script.cpp | 33 | ||||
-rw-r--r-- | engines/lilliput/script.h | 4 |
2 files changed, 18 insertions, 19 deletions
diff --git a/engines/lilliput/script.cpp b/engines/lilliput/script.cpp index 821d701a6a..fe09fac553 100644 --- a/engines/lilliput/script.cpp +++ b/engines/lilliput/script.cpp @@ -61,7 +61,7 @@ LilliputScript::LilliputScript(LilliputEngine *vm) : _vm(vm), _currScript(NULL) } for (int i = 0; i < 32; i++) - _array1813B[i] = 0; + _array1813BPos[i] = Common::Point(0, 0); for (int i = 0; i < 40; i++) { _characterScriptEnabled[i] = 1; @@ -2826,25 +2826,25 @@ void LilliputScript::OC_sub1817F() { int b1 = var1 & 0xFF; int b2 = var2 & 0xFF; - sub1818B(b1,b2); + sub1818B(Common::Point(b1, b2)); } //TODO checkme: parameter order is maybe wrong -void LilliputScript::sub1818B(int b1, int b2) { - debugC(2, kDebugScriptTBC, "sub1818B(%d, %d)", b1, b2); +void LilliputScript::sub1818B(Common::Point pos) { + debugC(2, kDebugScriptTBC, "sub1818B(%d - %d)", pos.x, pos.y); for (int i = 0; i < _vm->_word1817B; i++) { - if ((_array1813B[i] >> 8) == b2 ) { - b2 += _array1813B[i] & 0xFF; - if (b2 > 0xFF) { - b2 = 0xFF; - ++b1; - } - _array1813B[i] = (b1 << 8) + b2; + if (_array1813BPos[i].x == pos.x) { + pos.y += _array1813BPos[i].y; + if (pos.y > 0xFF) + pos.y = 0xFF; + + _array1813BPos[i] = pos; return; } } - _array1813B[_vm->_word1817B++] = (b1 << 8) + b2; + _array1813BPos[_vm->_word1817B] = pos; + ++_vm->_word1817B; } //TODO checkme: case 0x2D is dubious @@ -2874,8 +2874,7 @@ void LilliputScript::OC_sub181BB() { int a = (_currScript->readUint16LE() * c) + (c & 0xFF); b = (b & 0xFF00) + a; - sub1818B(b & 0xFF, b >> 8); - + sub1818B(Common::Point(b >> 8, b & 0xFF)); } void LilliputScript::OC_sub18213() { @@ -2887,9 +2886,9 @@ void LilliputScript::OC_sub18213() { int maxItem = var1 & 0xFF; for (int i = 0; i < _vm->_word1817B; i++) { - if ((_array1813B[i] & 0xFF) > maxValue) { - maxValue = _array1813B[i] & 0xFF; - maxItem = _array1813B[i] >> 8; + if (_array1813BPos[i].y > maxValue) { + maxValue = _array1813BPos[i].y; + maxItem = _array1813BPos[i].x; } } sub1823E(_vm->_currentScriptCharacter, maxItem, _vm->_currentCharacterVariables); diff --git a/engines/lilliput/script.h b/engines/lilliput/script.h index ca61d2b62c..92e092aa7e 100644 --- a/engines/lilliput/script.h +++ b/engines/lilliput/script.h @@ -82,7 +82,7 @@ public: Common::Point _array12311[640]; byte _array128EF[40]; byte _array12839[40]; - int _array1813B[32]; + Common::Point _array1813BPos[32]; void sub130B6(); @@ -264,7 +264,7 @@ private: void OC_sub1810A(); void OC_sub1812D(); void OC_sub1817F(); - void sub1818B(int b1, int b2); + void sub1818B(Common::Point pos); void OC_sub181BB(); void OC_sub18213(); void OC_sub18252(); |