[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