aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorDenis Kasak2009-07-02 20:29:14 +0000
committerDenis Kasak2009-07-02 20:29:14 +0000
commit8bba3e6f10ce68dd9615ab7340fb0c54b3f61e1a (patch)
tree5539766f3a3db5b21a2b3e566b13a1231e184e50 /engines
parentcac39d8295c7be133d9d51c3e5b9dd7d8b5637cc (diff)
downloadscummvm-rg350-8bba3e6f10ce68dd9615ab7340fb0c54b3f61e1a.tar.gz
scummvm-rg350-8bba3e6f10ce68dd9615ab7340fb0c54b3f61e1a.tar.bz2
scummvm-rg350-8bba3e6f10ce68dd9615ab7340fb0c54b3f61e1a.zip
Added Game::changeRoom() method and Game::_currentRoom.
svn-id: r42036
Diffstat (limited to 'engines')
-rw-r--r--engines/draci/game.cpp34
-rw-r--r--engines/draci/game.h4
2 files changed, 36 insertions, 2 deletions
diff --git a/engines/draci/game.cpp b/engines/draci/game.cpp
index 5bcaa1434e..75f55e1798 100644
--- a/engines/draci/game.cpp
+++ b/engines/draci/game.cpp
@@ -134,7 +134,7 @@ Game::Game(DraciEngine *vm) : _vm(vm) {
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 @@ GameObject *Game::getObject(uint16 objNum) {
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;
diff --git a/engines/draci/game.h b/engines/draci/game.h
index e65de7c771..d3a47902d8 100644
--- a/engines/draci/game.h
+++ b/engines/draci/game.h
@@ -105,9 +105,11 @@ private:
int16 *_variables;
byte *_itemStatus;
GameObject *_objects;
-
+ Room _currentRoom;
+
void loadObject(uint16 numObj);
GameObject *getObject(uint16 objNum);
+ void changeRoom(uint16 roomNum);
};
} // End of namespace Draci