diff options
Diffstat (limited to 'engines/supernova2/state.cpp')
-rw-r--r-- | engines/supernova2/state.cpp | 27 |
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; |