diff options
author | uruk | 2014-06-21 01:57:18 +0200 |
---|---|---|
committer | uruk | 2014-06-21 01:57:18 +0200 |
commit | e708c1e5cd14e1eed2f9e68ff4335cdd00b93f20 (patch) | |
tree | dbbbb893a38aad05e9dc8582819345df683c0e03 /engines/cge2/cge2_main.cpp | |
parent | fcd387553f5242139e78db87f91047c55705e259 (diff) | |
download | scummvm-rg350-e708c1e5cd14e1eed2f9e68ff4335cdd00b93f20.tar.gz scummvm-rg350-e708c1e5cd14e1eed2f9e68ff4335cdd00b93f20.tar.bz2 scummvm-rg350-e708c1e5cd14e1eed2f9e68ff4335cdd00b93f20.zip |
CGE2: Implement "quit menu".
Now the "main switch" on the menu panel is working.
Also move a couple of defines from cge2_main.h to cge2.h during the process.
Diffstat (limited to 'engines/cge2/cge2_main.cpp')
-rw-r--r-- | engines/cge2/cge2_main.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/engines/cge2/cge2_main.cpp b/engines/cge2/cge2_main.cpp index f16f0ce340..34e7cfe50f 100644 --- a/engines/cge2/cge2_main.cpp +++ b/engines/cge2/cge2_main.cpp @@ -35,6 +35,7 @@ #include "cge2/spare.h" #include "cge2/events.h" #include "cge2/map.h" +#include "cge2/vmenu.h" namespace CGE2 { @@ -1075,7 +1076,27 @@ void CGE2Engine::switchMusic() { } void CGE2Engine::quit() { - warning("STUB: CGE2Engine::quit()"); + Common::Array<Choice *> quitMenu; // Deleted in VMenu's destructor. + quitMenu.push_back(new StartCountDownChoice(this)); + quitMenu.push_back(new ResetQSwitchChoice(this)); + + if (_commandHandler->idle()) { + if (VMenu::_addr) { + _commandHandlerTurbo->addCommand(kCmdKill, -1, 0, VMenu::_addr); + ResetQSwitchChoice rqsChoice(this); + rqsChoice.proc(); + } else { + quitMenu[0]->_text = _text->getText(kQuitText); + quitMenu[1]->_text = _text->getText(kNoQuitText); + (new VMenu(this, quitMenu, V2D(this, -1, -1), kCBMnu))->setName(_text->getText(kQuitTitle)); + _commandHandlerTurbo->addCommand(kCmdSeq, kPowerRef, 0, nullptr); + keyClick(); + } + } +} + +void CGE2Engine::keyClick() { + _commandHandlerTurbo->addCommand(kCmdSound, -1, 5, nullptr); } void CGE2Engine::setVolume(int idx, int cnt) { |