From 3d59d9a13765b841fb7bc6495dcaabf17ee45c60 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 16 Nov 2011 00:00:07 +0100 Subject: CGE: Add RTL, hook Main Menu to right click on audio button --- engines/cge/cge.cpp | 8 +++----- engines/cge/cge.h | 1 + engines/cge/cge_main.cpp | 19 +++++++++++-------- engines/cge/events.cpp | 5 ----- engines/cge/events.h | 2 -- 5 files changed, 15 insertions(+), 20 deletions(-) (limited to 'engines/cge') diff --git a/engines/cge/cge.cpp b/engines/cge/cge.cpp index 74a855f442..87654c53f4 100644 --- a/engines/cge/cge.cpp +++ b/engines/cge/cge.cpp @@ -53,9 +53,7 @@ CGEEngine::CGEEngine(OSystem *syst, const ADGameDescription *gameDescription) _oldLev = 0; _pocPtr = 0; _bitmapPalette = NULL; - - - + _quitFlag = false; } void CGEEngine::initSceneValues() { @@ -144,7 +142,6 @@ void CGEEngine::deinit() { DebugMan.clearAllDebugChannels(); delete _console; - _midiPlayer->killMidi(); // Delete engine objects delete _vga; @@ -161,8 +158,9 @@ void CGEEngine::deinit() { delete _keyboard; delete _mouse; delete _eventManager; - delete _fx; delete _sound; + delete _fx; + delete _midiPlayer; delete _font; delete _commandHandler; delete _commandHandlerTurbo; diff --git a/engines/cge/cge.h b/engines/cge/cge.h index 2ce154a4fb..2aada420ed 100644 --- a/engines/cge/cge.h +++ b/engines/cge/cge.h @@ -140,6 +140,7 @@ public: virtual Common::Error saveGameState(int slot, const Common::String &desc); static const int _maxSceneArr[5]; + bool _quitFlag; const ADGameDescription *_gameDescription; int _startupMode; diff --git a/engines/cge/cge_main.cpp b/engines/cge/cge_main.cpp index 532ebdc9a6..e5831400ee 100644 --- a/engines/cge/cge_main.cpp +++ b/engines/cge/cge_main.cpp @@ -923,7 +923,7 @@ void CGEEngine::optionTouch(int opt, uint16 mask) { if (mask & kMouseLeftUp) switchMusic(); else if (mask & kMouseRightUp) - warning("TODO: Use ScummVM sound dialog"); + openMainMenuDialog(); break; case 3: if (mask & kMouseLeftUp) @@ -1255,12 +1255,15 @@ void CGEEngine::mainLoop() { // Handle any pending events _eventManager->poll(); + + // Check shouldQuit() + _quitFlag = shouldQuit(); } void CGEEngine::handleFrame() { // Game frame delay uint32 millis = g_system->getMillis(); - while (!_eventManager->_quitFlag && (millis < (_lastFrame + kGameFrameDelay))) { + while (!_quitFlag && (millis < (_lastFrame + kGameFrameDelay))) { // Handle any pending events _eventManager->poll(); @@ -1309,7 +1312,7 @@ void CGEEngine::loadUser() { } void CGEEngine::runGame() { - if (_eventManager->_quitFlag) + if (_quitFlag) return; loadHeroXY(); @@ -1407,7 +1410,7 @@ void CGEEngine::runGame() { _keyboard->setClient(_sys); // main loop - while (!_finis && !_eventManager->_quitFlag) { + while (!_finis && !_quitFlag) { if (_flag[3]) _commandHandler->addCallback(kCmdExec, -1, 0, kQGame); mainLoop(); @@ -1430,7 +1433,7 @@ void CGEEngine::runGame() { void CGEEngine::movie(const char *ext) { assert(ext); - if (_eventManager->_quitFlag) + if (_quitFlag) return; char fn[12]; @@ -1442,7 +1445,7 @@ void CGEEngine::movie(const char *ext) { feedSnail(_vga->_showQ->locate(999), kTake); _vga->_showQ->append(_mouse); _keyboard->setClient(_sys); - while (!_commandHandler->idle() && !_eventManager->_quitFlag) + while (!_commandHandler->idle() && !_quitFlag) mainLoop(); _keyboard->setClient(NULL); @@ -1454,7 +1457,7 @@ void CGEEngine::movie(const char *ext) { } bool CGEEngine::showTitle(const char *name) { - if (_eventManager->_quitFlag) + if (_quitFlag) return false; _bitmapPalette = _vga->_sysPal; @@ -1487,7 +1490,7 @@ bool CGEEngine::showTitle(const char *name) { _mouse->on(); for (; !_commandHandler->idle() || Vmenu::_addr;) { mainLoop(); - if (_eventManager->_quitFlag) + if (_quitFlag) return false; } diff --git a/engines/cge/events.cpp b/engines/cge/events.cpp index 8f76d2efd5..e277d79ee1 100644 --- a/engines/cge/events.cpp +++ b/engines/cge/events.cpp @@ -282,7 +282,6 @@ void Mouse::newMouse(Common::Event &event) { /*----------------- EventManager interface -----------------*/ EventManager::EventManager(CGEEngine *vm) : _vm(vm){ - _quitFlag = false; _eventQueueHead = 0; _eventQueueTail = 0; memset(&_eventQueue, 0, kEventMax * sizeof(CGEEvent)); @@ -292,10 +291,6 @@ EventManager::EventManager(CGEEngine *vm) : _vm(vm){ void EventManager::poll() { while (g_system->getEventManager()->pollEvent(_event)) { switch (_event.type) { - case Common::EVENT_QUIT: - // Signal to quit - _quitFlag = true; - return; case Common::EVENT_KEYDOWN: case Common::EVENT_KEYUP: // Handle keyboard events diff --git a/engines/cge/events.h b/engines/cge/events.h index a4cdfed793..ac1e6231fe 100644 --- a/engines/cge/events.h +++ b/engines/cge/events.h @@ -140,8 +140,6 @@ private: void handleEvents(); public: - bool _quitFlag; - EventManager(CGEEngine *vm); void poll(); void clearEvent(Sprite *spr); -- cgit v1.2.3