[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