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

dkasak13 at users.sourceforge.net dkasak13 at users.sourceforge.net
Thu Jul 2 22:29:15 CEST 2009


Revision: 42036
          http://scummvm.svn.sourceforge.net/scummvm/?rev=42036&view=rev
Author:   dkasak13
Date:     2009-07-02 20:29:14 +0000 (Thu, 02 Jul 2009)

Log Message:
-----------
Added Game::changeRoom() method and Game::_currentRoom.

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 19:57:09 UTC (rev 42035)
+++ scummvm/branches/gsoc2009-draci/engines/draci/game.cpp	2009-07-02 20:29:14 UTC (rev 42036)
@@ -134,7 +134,7 @@
 	loadObject(1);
 	_vm->_script->run(getObject(1)->_program, getObject(1)->_init);
 
-	// changeRoom(_currentRoom);
+	changeRoom(_info->_currentRoom);
 }
 
 void Game::loadObject(uint16 objNum) {
@@ -189,6 +189,38 @@
 	return _objects + objNum;
 }
 
+void Game::changeRoom(uint16 roomNum) {
+	
+	// Convert to real index (indexes begin with 1 in the data files)
+	roomNum -= 1;
+
+	BAFile *f;
+	f = _vm->_roomsArchive->getFile(roomNum);
+	Common::MemoryReadStream roomReader(f->_data, f->_length);
+
+	roomReader.readUint32LE(); // Pointer to room program, not used
+	roomReader.readUint16LE(); // Program length, not used
+	roomReader.readUint32LE(); // Pointer to room title, not used
+
+	_currentRoom._music = roomReader.readByte();
+	_currentRoom._map = roomReader.readByte();
+	_currentRoom._palette = roomReader.readByte();
+	_currentRoom._numMasks = roomReader.readUint16LE();
+	_currentRoom._init = roomReader.readUint16LE();
+	_currentRoom._look = roomReader.readUint16LE();
+	_currentRoom._use = roomReader.readUint16LE();
+	_currentRoom._canUse = roomReader.readUint16LE();
+	_currentRoom._imInit = roomReader.readByte();
+	_currentRoom._imLook = roomReader.readByte();
+	_currentRoom._imUse = roomReader.readByte();
+	_currentRoom._mouseOn = roomReader.readByte();
+	_currentRoom._heroOn = roomReader.readByte();
+	roomReader.read(&_currentRoom._pers0, 12);
+	roomReader.read(&_currentRoom._persStep, 12);
+	_currentRoom._escRoom = roomReader.readByte();
+	_currentRoom._numGates = roomReader.readByte();
+}
+
 Game::~Game() {
 	delete[] _persons;
 	delete[] _variables;

Modified: scummvm/branches/gsoc2009-draci/engines/draci/game.h
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/game.h	2009-07-02 19:57:09 UTC (rev 42035)
+++ scummvm/branches/gsoc2009-draci/engines/draci/game.h	2009-07-02 20:29:14 UTC (rev 42036)
@@ -105,9 +105,11 @@
 	int16 *_variables;
 	byte *_itemStatus;
 	GameObject *_objects;	
-	
+	Room _currentRoom;	
+
 	void loadObject(uint16 numObj);
 	GameObject *getObject(uint16 objNum);
+	void changeRoom(uint16 roomNum);
 };
 
 } // 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