diff options
| author | Strangerke | 2012-05-10 19:55:39 +0200 | 
|---|---|---|
| committer | Eugene Sandulenko | 2018-03-28 17:36:57 +0200 | 
| commit | 48d59dfd2ea9086462740a728f8b877f875c5ff3 (patch) | |
| tree | 41a7dfb469e297d958aea72781972de555e640b3 | |
| parent | 872c9ea2fc6caddde9753df545f3572b01ac5e81 (diff) | |
| download | scummvm-rg350-48d59dfd2ea9086462740a728f8b877f875c5ff3.tar.gz scummvm-rg350-48d59dfd2ea9086462740a728f8b877f875c5ff3.tar.bz2 scummvm-rg350-48d59dfd2ea9086462740a728f8b877f875c5ff3.zip | |
LILLIPUT: Rewrite sub1818B
| -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(); | 
