aboutsummaryrefslogtreecommitdiff
path: root/engines/supernova2/state.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/supernova2/state.cpp')
-rw-r--r--engines/supernova2/state.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/engines/supernova2/state.cpp b/engines/supernova2/state.cpp
index 24b86895d9..71adbf0af9 100644
--- a/engines/supernova2/state.cpp
+++ b/engines/supernova2/state.cpp
@@ -80,6 +80,7 @@ void GameManager::initState() {
void GameManager::initRooms() {
_rooms[INTRO] = new Intro(_vm, this);
+ _rooms[AIRPORT] = new Airport(_vm, this);
}
void GameManager::updateEvents() {
@@ -167,6 +168,32 @@ void GameManager::wait(int ticks) {
} while (g_system->getMillis() < end && !_vm->shouldQuit());
}
+void GameManager::waitOnInput(int ticks) {
+ uint32 end = g_system->getMillis() + ticksToMsec(ticks);
+ do {
+ g_system->delayMillis(_vm->_delay);
+ updateEvents();
+ g_system->updateScreen();
+ } while (g_system->getMillis() < end && !_vm->shouldQuit() && !_keyPressed && !_mouseClicked);
+}
+
+bool GameManager::waitOnInput(int ticks, Common::KeyCode &keycode) {
+ keycode = Common::KEYCODE_INVALID;
+ uint32 end = g_system->getMillis() + ticksToMsec(ticks);
+ do {
+ g_system->delayMillis(_vm->_delay);
+ updateEvents();
+ g_system->updateScreen();
+ if (_keyPressed) {
+ keycode = _key.keycode;
+ _key.reset();
+ return true;
+ } else if (_mouseClicked)
+ return true;
+ } while (g_system->getMillis() < end && !_vm->shouldQuit());
+ return false;
+}
+
void GameManager::changeRoom(RoomId id) {
_currentRoom = _rooms[id];
_newRoom = true;