[Scummvm-cvs-logs] CVS: scummvm/saga interface.cpp,1.83,1.84 interface.h,1.44,1.45 script.h,1.78,1.79 sfuncs.cpp,1.105,1.106
Andrew Kurushin
h00ligan at users.sourceforge.net
Sat Apr 23 05:34:52 CEST 2005
Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29925
Modified Files:
interface.cpp interface.h script.h sfuncs.cpp
Log Message:
fixed sfDropObject implementation
Index: interface.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/interface.cpp,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -d -r1.83 -r1.84
--- interface.cpp 22 Apr 2005 15:43:42 -0000 1.83
+++ interface.cpp 23 Apr 2005 12:34:34 -0000 1.84
@@ -634,9 +634,9 @@
}
}
-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 @@
_inventory[i] = _inventory[i - 1];
}
- _inventory[0] = sprite;
+ _inventory[0] = objectId;
_inventoryCount++;
_inventoryPos = 0;
@@ -658,15 +658,15 @@
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 @@
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;
Index: interface.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/interface.h,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- interface.h 22 Apr 2005 14:11:02 -0000 1.44
+++ interface.h 23 Apr 2005 12:34:35 -0000 1.45
@@ -165,10 +165,10 @@
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) {
Index: script.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/script.h,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -d -r1.78 -r1.79
--- script.h 22 Apr 2005 01:38:27 -0000 1.78
+++ script.h 23 Apr 2005 12:34:35 -0000 1.79
@@ -494,7 +494,7 @@
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);
Index: sfuncs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sfuncs.cpp,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -d -r1.105 -r1.106
--- sfuncs.cpp 22 Apr 2005 16:41:44 -0000 1.105
+++ sfuncs.cpp 23 Apr 2005 12:34:35 -0000 1.106
@@ -82,7 +82,7 @@
OPCODE(sfSetActorState),
OPCODE(sfScriptMoveTo),
OPCODE(sfSceneEq),
- OPCODE(SF_dropObject),
+ OPCODE(sfDropObject),
OPCODE(sfFinishBgdAnim),
OPCODE(sfSwapActors),
OPCODE(sfSimulSpeech),
@@ -735,28 +735,28 @@
}
// 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)
More information about the Scummvm-git-logs
mailing list