[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