diff options
author | Andrew Kurushin | 2005-04-23 12:34:35 +0000 |
---|---|---|
committer | Andrew Kurushin | 2005-04-23 12:34:35 +0000 |
commit | edad36ee601c25f15fee2b04124ebdf9fc694f12 (patch) | |
tree | d85c29bd2f91ebc4131c87a8e51e2adaf5a5b1ea /saga | |
parent | 40c3fdddc79f6641910f48aa0ed2009b3f71669d (diff) | |
download | scummvm-rg350-edad36ee601c25f15fee2b04124ebdf9fc694f12.tar.gz scummvm-rg350-edad36ee601c25f15fee2b04124ebdf9fc694f12.tar.bz2 scummvm-rg350-edad36ee601c25f15fee2b04124ebdf9fc694f12.zip |
fixed sfDropObject implementation
svn-id: r17767
Diffstat (limited to 'saga')
-rw-r--r-- | saga/interface.cpp | 16 | ||||
-rw-r--r-- | saga/interface.h | 6 | ||||
-rw-r--r-- | saga/script.h | 2 | ||||
-rw-r--r-- | saga/sfuncs.cpp | 32 |
4 files changed, 28 insertions, 28 deletions
diff --git a/saga/interface.cpp b/saga/interface.cpp index b090294130..f1e5c03cab 100644 --- a/saga/interface.cpp +++ b/saga/interface.cpp @@ -634,9 +634,9 @@ void Interface::updateInventory(int pos) { } } -void Interface::addToInventory(int sprite, int pos) { +void Interface::addToInventory(int objectId, int pos) { if (pos != -1) { - _inventory[pos] = sprite; + _inventory[pos] = objectId; _inventoryCount = MAX(_inventoryCount, pos + 1); return; } @@ -649,7 +649,7 @@ void Interface::addToInventory(int sprite, int pos) { _inventory[i] = _inventory[i - 1]; } - _inventory[0] = sprite; + _inventory[0] = objectId; _inventoryCount++; _inventoryPos = 0; @@ -658,15 +658,15 @@ void Interface::addToInventory(int sprite, int pos) { draw(); } -void Interface::removeFromInventory(int sprite) { - int j = inventoryItemPosition(sprite); +void Interface::removeFromInventory(int objectId) { + int j = inventoryItemPosition(objectId); if (j == -1) { return; } int i; - for (i = j; i < _inventoryCount; i++) { + for (i = j; i < _inventoryCount - 1; i++) { _inventory[i] = _inventory[i + 1]; } @@ -684,9 +684,9 @@ void Interface::clearInventory() { updateInventory(0); } -int Interface::inventoryItemPosition(int sprite) { +int Interface::inventoryItemPosition(int objectId) { for (int i = 0; i < _inventoryCount; i++) - if (_inventory[i] == sprite) + if (_inventory[i] == objectId) return i; return -1; diff --git a/saga/interface.h b/saga/interface.h index a63740dee9..df48e0b775 100644 --- a/saga/interface.h +++ b/saga/interface.h @@ -165,10 +165,10 @@ public: void inventoryChangePos(int chg); void inventorySetPos(int key); - void addToInventory(int sprite, int pos = -1); - void removeFromInventory(int sprite); + void addToInventory(int objectId, int pos = -1); + void removeFromInventory(int objectId); void clearInventory(); - int inventoryItemPosition(int sprite); + int inventoryItemPosition(int objectId); void drawInventory(); void updateInventory(int pos); int getInventoryContentByPanelButton(PanelButton * panelButton) { diff --git a/saga/script.h b/saga/script.h index 5066f2d89d..3334dab1f7 100644 --- a/saga/script.h +++ b/saga/script.h @@ -494,7 +494,7 @@ private: void sfSetActorState(SCRIPTFUNC_PARAMS); void sfScriptMoveTo(SCRIPTFUNC_PARAMS); void sfSceneEq(SCRIPTFUNC_PARAMS); - void SF_dropObject(SCRIPTFUNC_PARAMS); + void sfDropObject(SCRIPTFUNC_PARAMS); void sfFinishBgdAnim(SCRIPTFUNC_PARAMS); void sfSwapActors(SCRIPTFUNC_PARAMS); void sfSimulSpeech(SCRIPTFUNC_PARAMS); diff --git a/saga/sfuncs.cpp b/saga/sfuncs.cpp index 9a6d6616ab..6b5f1fe1ab 100644 --- a/saga/sfuncs.cpp +++ b/saga/sfuncs.cpp @@ -82,7 +82,7 @@ void Script::setupScriptFuncList(void) { OPCODE(sfSetActorState), OPCODE(sfScriptMoveTo), OPCODE(sfSceneEq), - OPCODE(SF_dropObject), + OPCODE(sfDropObject), OPCODE(sfFinishBgdAnim), OPCODE(sfSwapActors), OPCODE(sfSimulSpeech), @@ -735,28 +735,28 @@ void Script::sfSceneEq(SCRIPTFUNC_PARAMS) { } // Script function #32 (0x20) -void Script::SF_dropObject(SCRIPTFUNC_PARAMS) { - uint16 obj_param = thread->pop(); - uint16 sprite_param = thread->pop(); - int16 x_param = thread->pop(); - int16 y_param = thread->pop(); +void Script::sfDropObject(SCRIPTFUNC_PARAMS) { + uint16 objectId; + uint16 spriteId; + int16 x; + int16 y; ObjectData *obj; - int index = obj_param & 0x1FFF; - - if (!_vm->_actor->validObjId(_vm->_actor->objIndexToId(index))) - return; + objectId = thread->pop(); + spriteId = thread->pop(); + x = thread->pop(); + y = thread->pop(); - obj = _vm->_actor->getObj(_vm->_actor->objIndexToId(index)); + obj = _vm->_actor->getObj(objectId); - if (obj->sceneNumber == -1) { - _vm->_interface->removeFromInventory(index); + if (obj->sceneNumber == ITE_SCENE_INV) { + _vm->_interface->removeFromInventory(objectId); } obj->sceneNumber = _vm->_scene->currentSceneNumber(); - obj->spriteListResourceId = 9 + sprite_param; - obj->location.x = x_param; - obj->location.y = y_param; + obj->spriteListResourceId = 9 + spriteId; + obj->location.x = x; + obj->location.y = y; } // Script function #33 (0x21) |