aboutsummaryrefslogtreecommitdiff
path: root/saga
diff options
context:
space:
mode:
authorAndrew Kurushin2005-04-23 12:34:35 +0000
committerAndrew Kurushin2005-04-23 12:34:35 +0000
commitedad36ee601c25f15fee2b04124ebdf9fc694f12 (patch)
treed85c29bd2f91ebc4131c87a8e51e2adaf5a5b1ea /saga
parent40c3fdddc79f6641910f48aa0ed2009b3f71669d (diff)
downloadscummvm-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.cpp16
-rw-r--r--saga/interface.h6
-rw-r--r--saga/script.h2
-rw-r--r--saga/sfuncs.cpp32
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)