From f2ac8a951c57f076a7e381eac590ddf43f8e95eb Mon Sep 17 00:00:00 2001 From: jacob1 Date: Sat, 10 Mar 2018 16:01:14 -0500 Subject: [PATCH] add ctrl+q shortcut to exit the game from anywhere --- src/PowderToySDL.cpp | 5 ++++- src/gui/game/GameView.cpp | 18 +----------------- src/gui/game/GameView.h | 1 - src/gui/interface/Engine.cpp | 17 +++++++++++++++++ src/gui/interface/Engine.h | 1 + 5 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/PowderToySDL.cpp b/src/PowderToySDL.cpp index 45ea0f6687..a52d7ef34c 100644 --- a/src/PowderToySDL.cpp +++ b/src/PowderToySDL.cpp @@ -646,7 +646,10 @@ void EventProcess(SDL_Event event) engine->Exit(); break; case SDL_KEYDOWN: - engine->onKeyPress(event.key.keysym.sym, event.key.keysym.unicode, event.key.keysym.mod&KMOD_SHIFT, event.key.keysym.mod&KMOD_CTRL, event.key.keysym.mod&KMOD_ALT); + if (event.key.keysym.sym == 'q' && (event.key.keysym.mod&KMOD_CTRL)) + engine->ConfirmExit(); + else + engine->onKeyPress(event.key.keysym.sym, event.key.keysym.unicode, event.key.keysym.mod&KMOD_SHIFT, event.key.keysym.mod&KMOD_CTRL, event.key.keysym.mod&KMOD_ALT); break; case SDL_KEYUP: engine->onKeyRelease(event.key.keysym.sym, event.key.keysym.unicode, event.key.keysym.mod&KMOD_SHIFT, event.key.keysym.mod&KMOD_CTRL, event.key.keysym.mod&KMOD_ALT); diff --git a/src/gui/game/GameView.cpp b/src/gui/game/GameView.cpp index a76be98197..db2db591de 100644 --- a/src/gui/game/GameView.cpp +++ b/src/gui/game/GameView.cpp @@ -1327,22 +1327,6 @@ void GameView::OnMouseUp(int x, int y, unsigned button) UpdateDrawMode(); } -void GameView::ExitPrompt() -{ - class ExitConfirmation: public ConfirmDialogueCallback { - public: - ExitConfirmation() {} - virtual void ConfirmCallback(ConfirmPrompt::DialogueResult result) { - if (result == ConfirmPrompt::ResultOkay) - { - ui::Engine::Ref().Exit(); - } - } - virtual ~ExitConfirmation() { } - }; - new ConfirmPrompt("You are about to quit", "Are you sure you want to exit the game?", new ExitConfirmation()); -} - void GameView::ToolTip(ui::Point senderPosition, std::string toolTip) { // buttom button tooltips @@ -1579,7 +1563,7 @@ void GameView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool break; case SDLK_ESCAPE: case 'q': - ExitPrompt(); + ui::Engine::Ref().ConfirmExit(); break; case 'u': c->ToggleAHeat(); diff --git a/src/gui/game/GameView.h b/src/gui/game/GameView.h index 9e02a5f1c4..d94b927cb8 100644 --- a/src/gui/game/GameView.h +++ b/src/gui/game/GameView.h @@ -146,7 +146,6 @@ class GameView: public ui::Window bool CtrlBehaviour(){ return ctrlBehaviour; } bool ShiftBehaviour(){ return shiftBehaviour; } bool AltBehaviour(){ return altBehaviour; } - void ExitPrompt(); SelectMode GetSelectMode() { return selectMode; } void BeginStampSelection(); ui::Point GetPlaceSaveOffset() { return placeSaveOffset; } diff --git a/src/gui/interface/Engine.cpp b/src/gui/interface/Engine.cpp index 90d0aec2af..ed0e09630e 100644 --- a/src/gui/interface/Engine.cpp +++ b/src/gui/interface/Engine.cpp @@ -7,6 +7,7 @@ #include "Platform.h" #include "gui/interface/Window.h" #include "gui/interface/Engine.h" +#include "gui/dialogues/ConfirmPrompt.h" #include "graphics/Graphics.h" using namespace ui; @@ -73,6 +74,22 @@ void Engine::Exit() running_ = false; } +void Engine::ConfirmExit() +{ + class ExitConfirmation: public ConfirmDialogueCallback { + public: + ExitConfirmation() {} + virtual void ConfirmCallback(ConfirmPrompt::DialogueResult result) { + if (result == ConfirmPrompt::ResultOkay) + { + ui::Engine::Ref().Exit(); + } + } + virtual ~ExitConfirmation() { } + }; + new ConfirmPrompt("You are about to quit", "Are you sure you want to exit the game?", new ExitConfirmation()); +} + void Engine::ShowWindow(Window * window) { windowOpenState = 0; diff --git a/src/gui/interface/Engine.h b/src/gui/interface/Engine.h index ec69f53f2c..d9040dda36 100644 --- a/src/gui/interface/Engine.h +++ b/src/gui/interface/Engine.h @@ -39,6 +39,7 @@ namespace ui inline long unsigned int LastTick() { return lastTick; } inline void LastTick(long unsigned int tick) { lastTick = tick; } void Exit(); + void ConfirmExit(); void Break(); void UnBreak();