From e708c1e5cd14e1eed2f9e68ff4335cdd00b93f20 Mon Sep 17 00:00:00 2001 From: uruk Date: Sat, 21 Jun 2014 01:57:18 +0200 Subject: 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. --- engines/cge2/cge2_main.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'engines/cge2/cge2_main.cpp') 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 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) { -- cgit v1.2.3