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

dkasak13 at users.sourceforge.net dkasak13 at users.sourceforge.net
Sun Jun 28 15:10:54 CEST 2009


Revision: 41925
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41925&view=rev
Author:   dkasak13
Date:     2009-06-28 13:10:53 +0000 (Sun, 28 Jun 2009)

Log Message:
-----------
Added struct GameObject (such structs are stored in OBJEKTY.DFW and used for in-game objects' info). Added Game::loadObject() for loading such objects into memory. Made Game's constructor load the object for the main hero.

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-06-28 00:45:01 UTC (rev 41924)
+++ scummvm/branches/gsoc2009-draci/engines/draci/game.cpp	2009-06-28 13:10:53 UTC (rev 41925)
@@ -121,8 +121,51 @@
 // TODO: Why is this failing?
 //	assert(curOffset == _info->_numDialogBlocks);
 
+	loadObject(0, &_heroObj);
 }
 
+void Game::loadObject(uint16 objNum, GameObject *obj) {
+	Common::String path("OBJEKTY.DFW");
+	
+	BArchive objArchive(path);
+	BAFile *file;
+	
+	file = objArchive[objNum * 3];
+	Common::MemoryReadStream objReader(file->_data, file->_length);
+	
+	obj->_init = objReader.readUint16LE();
+	obj->_look = objReader.readUint16LE();
+	obj->_use = objReader.readUint16LE();
+	obj->_canUse = objReader.readUint16LE();
+	obj->_imInit = objReader.readByte();
+	obj->_imLook = objReader.readByte();
+	obj->_imUse = objReader.readByte();
+	obj->_walkDir = objReader.readByte();
+	obj->_priority = objReader.readByte();
+	obj->_idxSeq = objReader.readUint16LE();
+	obj->_numSeq = objReader.readUint16LE();
+	obj->_lookX = objReader.readUint16LE();
+	obj->_lookY = objReader.readUint16LE();
+	obj->_useX = objReader.readUint16LE();
+	obj->_useY = objReader.readUint16LE();
+	obj->_lookDir = objReader.readByte();
+	obj->_useDir = objReader.readByte();
+	
+	obj->_absNum = objNum;
+	obj->_animObj = 0;
+	
+	obj->_seqTab = new uint16[obj->_numSeq];
+
+	file = objArchive[objNum * 3 + 1];
+	obj->_title = new byte[file->_length];
+	memcpy(obj->_title, file->_data, file->_length);
+	
+	file = objArchive[objNum * 3 + 2];
+	obj->_program = new byte[file->_length];
+	memcpy(obj->_program, file->_data, file->_length);
+	obj->_progLen = file->_length;
+}
+	
 Game::~Game() {
 	delete[] _persons;
 	delete[] _variables;
@@ -130,6 +173,15 @@
 	delete[] _itemStatus;
 	delete[] _objectStatus;
 	delete _info;
-}	
+}
 
+GameObject::~GameObject() { 
+	if (_seqTab) 
+		delete[] _seqTab; 
+	if (_title)
+		delete[] _title;
+	if (_program)
+		delete[] _program;
+}
+
 } 

Modified: scummvm/branches/gsoc2009-draci/engines/draci/game.h
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/game.h	2009-06-28 00:45:01 UTC (rev 41924)
+++ scummvm/branches/gsoc2009-draci/engines/draci/game.h	2009-06-28 13:10:53 UTC (rev 41925)
@@ -34,6 +34,26 @@
 	personSize = sizeof(uint16) * 2 + sizeof(byte)
 };
 
+struct GameObject {
+	
+	GameObject() : _seqTab(NULL), _title(NULL), _program(NULL) {}
+	~GameObject();
+		
+	uint16 _init, _look, _use, _canUse;
+	bool _imInit, _imLook, _imUse;
+	byte _walkDir;
+	byte _priority;
+	uint16 _idxSeq, _numSeq;
+	uint16 _lookX, _lookY, _useX, _useY;
+	byte _lookDir, _useDir;
+	uint16 _absNum;
+	byte _animObj;
+	uint16 *_seqTab;
+	byte *_program;
+	byte *_title;
+	uint32 _progLen;
+};
+
 struct GameInfo {
 	byte _currentRoom;
 	byte _mapRoom;
@@ -66,6 +86,9 @@
 	int16 *_variables;
 	byte *_itemStatus;
 	byte *_objectStatus;
+	GameObject _heroObj;
+	
+	void loadObject(uint16 numObj, GameObject *obj);
 };
 
 } // 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