From a053a19ca258dc4d344bc2345b5faa1bf2b0183e Mon Sep 17 00:00:00 2001 From: Andrei Prykhodko Date: Wed, 18 Jul 2018 21:48:54 +0300 Subject: PINK: fixed pausing of engine when menu appears --- engines/pink/director.cpp | 2 +- engines/pink/pink.cpp | 12 +++++++++--- engines/pink/pink.h | 2 ++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/engines/pink/director.cpp b/engines/pink/director.cpp index cbf44484a9..09af376fbc 100644 --- a/engines/pink/director.cpp +++ b/engines/pink/director.cpp @@ -79,7 +79,7 @@ static const Graphics::MacMenuData menuSubItems[] = { Director::Director() : _surface(640, 480) { _wm.setScreen(&_surface); - _wm.setMode(Graphics::kWMModeNoDesktop | Graphics::kWMModeAutohideMenu); + _wm.setMode(Graphics::kWMModeNoDesktop | Graphics::kWMModeAutohideMenu | Graphics::kWMModalMenuMode); _wm.setMenuHotzone(Common::Rect(0, 0, 640, 23)); _wm.setMenuDelay(250000); diff --git a/engines/pink/pink.cpp b/engines/pink/pink.cpp index f18df012ed..25c8f8818e 100644 --- a/engines/pink/pink.cpp +++ b/engines/pink/pink.cpp @@ -75,6 +75,9 @@ Common::Error PinkEngine::init() { _console = new Console(this); _director = new Director(); + _director->getWndManager()._engine = this; + _director->getWndManager()._pauseEngineCallback = &pauseEngine; + Common::String orbName; Common::String broName; if (isPeril()) { @@ -147,9 +150,7 @@ Common::Error Pink::PinkEngine::run() { } } - if (!_director->isMenuActive()) - _actor->update(); - + _actor->update(); _director->update(); _system->delayMillis(10); } @@ -157,6 +158,11 @@ Common::Error Pink::PinkEngine::run() { return Common::kNoError; } +void PinkEngine::pauseEngine(void *engine, bool pause) { + PinkEngine *vm = (PinkEngine*)engine; + vm->pauseEngineIntern(pause); +} + void PinkEngine::load(Archive &archive) { archive.readString(); archive.readString(); diff --git a/engines/pink/pink.h b/engines/pink/pink.h index 901717890d..faed498a8f 100644 --- a/engines/pink/pink.h +++ b/engines/pink/pink.h @@ -92,6 +92,8 @@ public: Common::Error saveGameState(int slot, const Common::String &desc) override; bool canSaveGameStateCurrently() override; + static void pauseEngine(void *engine, bool pause); // for MacWndMgr + friend class Console; protected: -- cgit v1.2.3