aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Špalek2009-09-30 04:33:52 +0000
committerRobert Špalek2009-09-30 04:33:52 +0000
commit76a0bcb6c4a523c5a5b312ece3cb2bab359ab4a9 (patch)
treeb1a762bc87deb75708aced9d5b3738b488d7dc81
parent77bd8d0bfbfaea6c05ca606ead77334d88cd22d1 (diff)
downloadscummvm-rg350-76a0bcb6c4a523c5a5b312ece3cb2bab359ab4a9.tar.gz
scummvm-rg350-76a0bcb6c4a523c5a5b312ece3cb2bab359ab4a9.tar.bz2
scummvm-rg350-76a0bcb6c4a523c5a5b312ece3cb2bab359ab4a9.zip
Implemented the map room, entered when 'm' is pressed.
svn-id: r44474
-rw-r--r--engines/draci/draci.cpp9
-rw-r--r--engines/draci/game.cpp9
-rw-r--r--engines/draci/game.h1
3 files changed, 19 insertions, 0 deletions
diff --git a/engines/draci/draci.cpp b/engines/draci/draci.cpp
index d77712b586..abe3393c31 100644
--- a/engines/draci/draci.cpp
+++ b/engines/draci/draci.cpp
@@ -215,6 +215,15 @@ bool DraciEngine::handleEvents() {
_script->endCurrentProgram();
}
}
+ else if (event.kbd.keycode == Common::KEYCODE_m) {
+ if (_game->getLoopStatus() == kStatusOrdinary) {
+ // TODO: record the current room number
+ // so that we can quickly exit there
+ // when Escape is pressed
+ _game->setRoomNum(_game->getMapRoom());
+ _game->setGateNum(0);
+ }
+ }
// Show walking map toggle
else if (event.kbd.keycode == Common::KEYCODE_w) {
_showWalkingMap = !_showWalkingMap;
diff --git a/engines/draci/game.cpp b/engines/draci/game.cpp
index 3b088773af..61cb4c7988 100644
--- a/engines/draci/game.cpp
+++ b/engines/draci/game.cpp
@@ -982,6 +982,11 @@ int Game::getCurrentDialogueOffset() const {
}
void Game::walkHero(int x, int y) {
+ // Needed for the map room with empty walking map. For some reason,
+ // findNearestWalkable() takes several seconds with 100% CPU to finish
+ // (correctly).
+ if (!_currentRoom._heroOn)
+ return;
Surface *surface = _vm->_screen->getSurface();
@@ -1476,6 +1481,10 @@ int Game::getEscRoom() const {
return _currentRoom._escRoom;
}
+int Game::getMapRoom() const {
+ return _info._mapRoom;
+}
+
void Game::schedulePalette(int paletteID) {
_scheduledPalette = paletteID;
}
diff --git a/engines/draci/game.h b/engines/draci/game.h
index bcc2323272..861ba6292d 100644
--- a/engines/draci/game.h
+++ b/engines/draci/game.h
@@ -298,6 +298,7 @@ public:
void addItem(int itemID);
int getEscRoom() const;
+ int getMapRoom() const;
int getMarkedAnimationIndex() const;
void setMarkedAnimationIndex(int index);