aboutsummaryrefslogtreecommitdiff
path: root/engines/cge2/cge2_main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cge2/cge2_main.cpp')
-rw-r--r--engines/cge2/cge2_main.cpp23
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) {