[Scummvm-cvs-logs] SF.net SVN: scummvm:[42026] scummvm/branches/gsoc2009-draci/engines/draci

dkasak13 at users.sourceforge.net dkasak13 at users.sourceforge.net
Thu Jul 2 17:08:43 CEST 2009


Revision: 42026
          http://scummvm.svn.sourceforge.net/scummvm/?rev=42026&view=rev
Author:   dkasak13
Date:     2009-07-02 15:08:42 +0000 (Thu, 02 Jul 2009)

Log Message:
-----------
Merged the info available from _objectStatus with the GameObject struct. Made Game keep a list of all the game's objects. Added Game::getObject() method for fetching a pointer to a particular object. Changed Game::loadObject() to not accept a pointer to a GameObject struct anymore.

Modified Paths:
--------------
    scummvm/branches/gsoc2009-draci/engines/draci/game.cpp
    scummvm/branches/gsoc2009-draci/engines/draci/game.h

Modified: scummvm/branches/gsoc2009-draci/engines/draci/game.cpp
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/game.cpp	2009-07-02 12:48:19 UTC (rev 42025)
+++ scummvm/branches/gsoc2009-draci/engines/draci/game.cpp	2009-07-02 15:08:42 UTC (rev 42026)
@@ -113,19 +113,29 @@
 	file = initArchive[0];
 	unsigned int numObjects = file->_length;
 	
-	_objectStatus = new byte[numObjects];
-	memcpy(_objectStatus, file->_data, file->_length);
+	_objects = new GameObject[numObjects];
+	Common::MemoryReadStream objStatus(file->_data, file->_length); 
 	
+	for (i = 0; i < numObjects; ++i) {
+		byte tmp = objStatus.readByte();
+
+		// Set object visibility
+		_objects[i]._visible = tmp & 1;
+
+		// Set object location
+		_objects[i]._location = tmp & ~1;
+ 	}
+
 	assert(numDialogs == _info->_numDialogs);
 	assert(numPersons == _info->_numPersons);
 	assert(numVariables == _info->_numVariables);
 	assert(numObjects == _info->_numObjects);	
 
-	loadObject(0, &_heroObj);
-	_vm->_script->run(_heroObj._program, _heroObj._init);
+	loadObject(1);
+	_vm->_script->run(getObject(1)->_program, getObject(1)->_init);
 }
 
-void Game::loadObject(uint16 objNum, GameObject *obj) {
+void Game::loadObject(uint16 objNum) {
 	Common::String path("OBJEKTY.DFW");
 	
 	BArchive objArchive(path);
@@ -134,6 +144,8 @@
 	file = objArchive[objNum * 3];
 	Common::MemoryReadStream objReader(file->_data, file->_length);
 	
+	GameObject *obj = getObject(objNum);
+
 	obj->_init = objReader.readUint16LE();
 	obj->_look = objReader.readUint16LE();
 	obj->_use = objReader.readUint16LE();
@@ -166,13 +178,21 @@
 	obj->_program._length = file->_length;
 	memcpy(obj->_program._bytecode, file->_data, file->_length);
 }
-	
+
+GameObject *Game::getObject(uint16 objNum) {
+
+	// Convert to real index (indexes begin with 1 in the data files)
+	objNum -= 1;
+
+	return &_objects[objNum];
+}
+
 Game::~Game() {
 	delete[] _persons;
 	delete[] _variables;
 	delete[] _dialogOffsets;
 	delete[] _itemStatus;
-	delete[] _objectStatus;
+	delete[] _objects;
 	delete _info;
 }
 

Modified: scummvm/branches/gsoc2009-draci/engines/draci/game.h
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/game.h	2009-07-02 12:48:19 UTC (rev 42025)
+++ scummvm/branches/gsoc2009-draci/engines/draci/game.h	2009-07-02 15:08:42 UTC (rev 42026)
@@ -54,6 +54,8 @@
 	uint16 *_seqTab;
 	GPL2Program _program;
 	byte *_title;
+	byte _location;
+	bool _visible;
 };
 
 struct GameInfo {
@@ -89,10 +91,10 @@
 	uint16 *_dialogOffsets;
 	int16 *_variables;
 	byte *_itemStatus;
-	byte *_objectStatus;
-	GameObject _heroObj;
+	GameObject *_objects;	
 	
-	void loadObject(uint16 numObj, GameObject *obj);
+	void loadObject(uint16 numObj);
+	GameObject *getObject(uint16 objNum);
 };
 
 } // End of namespace Draci


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list