diff options
Diffstat (limited to 'engines/wage')
-rw-r--r-- | engines/wage/script.cpp | 2 | ||||
-rw-r--r-- | engines/wage/wage.cpp | 8 | ||||
-rw-r--r-- | engines/wage/wage.h | 4 |
3 files changed, 9 insertions, 5 deletions
diff --git a/engines/wage/script.cpp b/engines/wage/script.cpp index 3405c8bf47..bff75d06bd 100644 --- a/engines/wage/script.cpp +++ b/engines/wage/script.cpp @@ -165,7 +165,7 @@ bool Script::execute(World *world, int loopCount, Common::String *inputText, Des } _data->seek(12); - while (_data->pos() < _data->size()) { + while (_data->pos() < _data->size() && !_engine->_shouldQuit) { printLine(_data->pos()); byte command = _data->readByte(); diff --git a/engines/wage/wage.cpp b/engines/wage/wage.cpp index 7f9fb073f5..ce47e3ebea 100644 --- a/engines/wage/wage.cpp +++ b/engines/wage/wage.cpp @@ -123,6 +123,8 @@ Common::Error WageEngine::run() { if (!_world->loadWorld(_resManager)) return Common::kNoGameDataFoundError; + _shouldQuit = false; + _gui = new Gui(this); _temporarilyHidden = true; @@ -140,8 +142,6 @@ Common::Error WageEngine::run() { processTurn(&input, NULL); _temporarilyHidden = false; - _shouldQuit = false; - while (!_shouldQuit) { _debugger->onFrame(); @@ -445,6 +445,10 @@ void WageEngine::processTurnInternal(Common::String *textInput, Designed *clickI regen(); Common::String input("look"); processTurnInternal(&input, NULL); + + if (_shouldQuit) + return; + redrawScene(); _temporarilyHidden = false; } else if (_loopCount == 1) { diff --git a/engines/wage/wage.h b/engines/wage/wage.h index d2c97adfa0..51a6951d9f 100644 --- a/engines/wage/wage.h +++ b/engines/wage/wage.h @@ -192,6 +192,8 @@ public: bool _isGameOver; bool _commandWasQuick; + bool _shouldQuit; + Common::String _inputText; void playSound(Common::String soundName); @@ -234,8 +236,6 @@ private: Common::MacResManager *_resManager; - bool _shouldQuit; - Audio::SoundHandle _soundHandle; }; |