[Scummvm-cvs-logs] CVS: scummvm/saga actor.cpp,1.113,1.114 actor.h,1.60,1.61 interface.cpp,1.73,1.74 sfuncs.cpp,1.100,1.101 sprite.cpp,1.45,1.46 sprite.h,1.16,1.17

Eugene Sandulenko sev at users.sourceforge.net
Mon Apr 18 03:28:11 CEST 2005


Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13099

Modified Files:
	actor.cpp actor.h interface.cpp sfuncs.cpp sprite.cpp sprite.h 
Log Message:
o Unstubbed sfPreDialog -- we have enough code for that
o Started to restore inventory functionality


Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/actor.cpp,v
retrieving revision 1.113
retrieving revision 1.114
diff -u -d -r1.113 -r1.114
--- actor.cpp	16 Apr 2005 16:55:24 -0000	1.113
+++ actor.cpp	18 Apr 2005 10:26:42 -0000	1.114
@@ -260,6 +260,8 @@
 			obj->location.y = ITE_ObjectTable[i].y;
 			obj->location.z = ITE_ObjectTable[i].z;
 			obj->disabled = false;
+
+			obj->spritelistRn = 0;
 		}
 	
 	} else {

Index: actor.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/actor.h,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -d -r1.60 -r1.61
--- actor.h	18 Mar 2005 17:11:34 -0000	1.60
+++ actor.h	18 Apr 2005 10:26:43 -0000	1.61
@@ -216,6 +216,7 @@
 class ObjectData: public CommonObjectData {	
 public:
 	uint16 interactBits;
+	int32 spritelistRn;
 };
 
 class ActorData: public CommonObjectData {

Index: interface.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/interface.cpp,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -d -r1.73 -r1.74
--- interface.cpp	26 Feb 2005 17:37:16 -0000	1.73
+++ interface.cpp	18 Apr 2005 10:26:43 -0000	1.74
@@ -533,7 +533,6 @@
 void Interface::drawInventory() {
 	if (_panelMode != kPanelMain)
 		return;
-/*
 	SURFACE *back_buf = _vm->_gfx->getBackBuffer();
 
 	// TODO: Inventory scrolling
@@ -548,14 +547,14 @@
 	Point drawPoint;
 
 	for (int i = 0; i < _inventoryCount; i++) {
-		if (_inventory[i] >= ARRAYSIZE(ObjectTable)) {
+		if (!_vm->_actor->validObjId(_vm->_actor->objIndexToId(_inventory[i]))) {
 			continue;
 		}
 		drawPoint.x = x + col * width;
 		drawPoint.y = y + row * height;
 
 		_vm->_sprite->draw(back_buf, _vm->_sprite->_mainSprites,
-			ObjectTable[_inventory[i]].spritelistRn,
+			_vm->_actor->getObj(_vm->_actor->objIndexToId(_inventory[i]))->spritelistRn,
 			drawPoint, 256);
 
 		if (++col >= _vm->getDisplayInfo().inventoryColumns) {
@@ -564,7 +563,7 @@
 			}
 			col = 0;
 		}
-	}*/
+	}
 }
 
 int Interface::inventoryTest(const Point& imousePt, int *ibutton) {

Index: sfuncs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sfuncs.cpp,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -d -r1.100 -r1.101
--- sfuncs.cpp	17 Apr 2005 11:53:25 -0000	1.100
+++ sfuncs.cpp	18 Apr 2005 10:26:43 -0000	1.101
@@ -186,7 +186,7 @@
 	obj = _vm->_actor->getObj(objectId);
 	if (obj->sceneNumber != ITE_SCENE_INV) {
 		obj->sceneNumber = ITE_SCENE_INV;
-		//_vm->_interface->addToInventory(index); TODO: do it
+		_vm->_interface->addToInventory(objectId);
 	}
 }
 
@@ -370,14 +370,12 @@
 // Disables mouse input, etc.
 void Script::sfPreDialog(SCRIPTFUNC_PARAMS) {
 	_vm->_interface->deactivate();
-	; // clear converse text
+	_vm->_interface->converseClear();
 	if (_vm->_interface->isInMainMode())
 		_vm->_interface->setMode(kPanelConverse);
 	else
-		; // display zero text
+		_vm->_interface->converseDisplayText(0);
 	_vm->_interface->setMode(kPanelNull);
-
-	debug(0, "STUB: SF_preDialog()");
 }
 
 // Script function #13 (0x0D)
@@ -732,28 +730,27 @@
 
 // Script function #32 (0x20)
 void Script::SF_dropObject(SCRIPTFUNC_PARAMS) {
-	error("SF_dropObject Not implemented");
-
-/*	ScriptDataWord obj_param = thread->pop();
-	ScriptDataWord sprite_param = thread->pop();
-	ScriptDataWord x_param = thread->pop();
-	ScriptDataWord y_param = thread->pop();
+	uint16 obj_param = thread->pop();
+	uint16 sprite_param = thread->pop();
+	int16 x_param = thread->pop();
+	int16 y_param = thread->pop();
+	ObjectData *obj;
 
 	int index = obj_param & 0x1FFF;
 
-	if (index >= ARRAYSIZE(ObjectTable)) {
-		return FAILURE;
-	}
+	if (!_vm->_actor->validObjId(_vm->_actor->objIndexToId(index)))
+		return;
 
-	if (ObjectTable[index].sceneIndex == -1) {
+	obj = _vm->_actor->getObj(_vm->_actor->objIndexToId(index));
+
+	if (obj->sceneNumber == -1) {
 		_vm->_interface->removeFromInventory(index);
 	}
 
-	ObjectTable[index].sceneIndex = _vm->_scene->currentSceneNumber();
-	ObjectTable[index].spritelistRn = 9 + sprite_param;
-	ObjectTable[index].x = x_param;
-	ObjectTable[index].y = y_param;
-*/
+	obj->sceneNumber = _vm->_scene->currentSceneNumber();
+	obj->spritelistRn = 9 + sprite_param;
+	obj->location.x = x_param;
+	obj->location.y = y_param;
 }
 
 // Script function #33 (0x21)

Index: sprite.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sprite.cpp,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- sprite.cpp	16 Apr 2005 16:55:35 -0000	1.45
+++ sprite.cpp	18 Apr 2005 10:26:43 -0000	1.46
@@ -217,7 +217,7 @@
 	}
 }
 
-int Sprite::draw(SURFACE *ds, SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale) {
+int Sprite::draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Point &screenCoord, int scale) {
 	const byte *spriteBuffer;
 	int width;
 	int height;

Index: sprite.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sprite.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- sprite.h	18 Feb 2005 00:00:00 -0000	1.16
+++ sprite.h	18 Apr 2005 10:26:43 -0000	1.17
@@ -70,7 +70,7 @@
 	Sprite(SagaEngine *vm);
 	~Sprite(void);
 	int loadList(int resourceId, SpriteList &spriteList); // load or append spriteList
-	int draw(SURFACE *ds, SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale);
+	int draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Point &screenCoord, int scale);
 	int drawOccluded(SURFACE *ds, SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale, int depth);
 	bool hitTest(SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale, const Point &testPoint);
 	void getScaledSpriteBuffer(SpriteList &spriteList, int spriteNumber, int scale, int &width, int &height, int &xAlign, int &yAlign, const byte *&buffer);





More information about the Scummvm-git-logs mailing list