From 18abc4702afb9617a8f392620d4846668faa679b Mon Sep 17 00:00:00 2001 From: Joseph-Eugene Winzer Date: Sun, 27 Aug 2017 17:10:08 +0200 Subject: SUPERNOVA: Implements Return To Launcher --- engines/supernova/state.cpp | 2 +- engines/supernova/supernova.cpp | 18 ++++++++++-------- engines/supernova/supernova.h | 3 ++- 3 files changed, 13 insertions(+), 10 deletions(-) (limited to 'engines') diff --git a/engines/supernova/state.cpp b/engines/supernova/state.cpp index 6453f39fb1..84f040d98a 100644 --- a/engines/supernova/state.cpp +++ b/engines/supernova/state.cpp @@ -351,7 +351,7 @@ void GameManager::processInput(Common::KeyState &state) { case Common::KEYCODE_x: if (state.flags & Common::KBD_ALT) { // quit game - _vm->_gameRunning = false; + _vm->quitGame(); } break; default: diff --git a/engines/supernova/supernova.cpp b/engines/supernova/supernova.cpp index 9a68079d4c..aa396081b8 100644 --- a/engines/supernova/supernova.cpp +++ b/engines/supernova/supernova.cpp @@ -104,7 +104,6 @@ SupernovaEngine::SupernovaEngine(OSystem *syst) , _imageIndex(0) , _sectionIndex(0) , _delay(33) - , _gameRunning(true) , _screenWidth(320) , _screenHeight(200) , _messageDisplayed(false) @@ -143,7 +142,7 @@ Common::Error SupernovaEngine::run() { CursorMan.replaceCursorPalette(initVGAPalette, 0, 16); CursorMan.showMouse(true); - while (_gameRunning) { + while (!shouldQuit()) { uint32 start = _system->getMillis(); updateEvents(); _gm->executeRoom(); @@ -169,11 +168,6 @@ void SupernovaEngine::updateEvents() { _gm->_keyPressed = false; while (g_system->getEventManager()->pollEvent(_event)) { switch (_event.type) { - case Common::EVENT_QUIT: - case Common::EVENT_RTL: - _gameRunning = false; - break; - case Common::EVENT_KEYDOWN: _gm->_keyPressed = true; if (_event.kbd.keycode == Common::KEYCODE_d && @@ -183,7 +177,6 @@ void SupernovaEngine::updateEvents() { if (_event.kbd.keycode == Common::KEYCODE_x && (_event.kbd.flags & Common::KBD_CTRL)) { // TODO: Draw exit box - _gameRunning = false; } _gm->processInput(_event.kbd); @@ -208,6 +201,15 @@ void SupernovaEngine::updateEvents() { } } +bool SupernovaEngine::hasFeature(EngineFeature f) const { + switch (f) { + case kSupportsRTL: + return true; + default: + return false; + } +} + void SupernovaEngine::initData() { // Images for (int i = 0; i < 44; ++i) diff --git a/engines/supernova/supernova.h b/engines/supernova/supernova.h index 271db0be13..56c4ad68d9 100644 --- a/engines/supernova/supernova.h +++ b/engines/supernova/supernova.h @@ -93,7 +93,6 @@ public: } _soundSamples[kAudioNumSamples]; Common::MemoryReadStream *_soundMusic[2]; Common::Event _event; - bool _gameRunning; int _screenWidth; int _screenHeight; @@ -134,6 +133,8 @@ public: void command_print(); Common::MemoryReadStream *convertToMod(const char *filename, int version = 1); + + virtual bool hasFeature(EngineFeature f) const; }; } -- cgit v1.2.3