diff options
author | Eugene Sandulenko | 2016-02-02 20:21:19 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2016-02-14 17:12:57 +0100 |
commit | 95a3a31ee110df758317944b477d202d77384f42 (patch) | |
tree | 3d7c91afde3695c9321ac84a80582f3f83eeb03b | |
parent | 9d67bd022a8dbfe0dfa28124785f32031b5c6903 (diff) | |
download | scummvm-rg350-95a3a31ee110df758317944b477d202d77384f42.tar.gz scummvm-rg350-95a3a31ee110df758317944b477d202d77384f42.tar.bz2 scummvm-rg350-95a3a31ee110df758317944b477d202d77384f42.zip |
WAGE: Initial code for shortcuts
-rw-r--r-- | engines/wage/gui.cpp | 5 | ||||
-rw-r--r-- | engines/wage/gui.h | 1 | ||||
-rw-r--r-- | engines/wage/menu.cpp | 17 | ||||
-rw-r--r-- | engines/wage/menu.h | 1 | ||||
-rw-r--r-- | engines/wage/wage.cpp | 6 |
5 files changed, 28 insertions, 2 deletions
diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp index ad212f2166..6285c487b2 100644 --- a/engines/wage/gui.cpp +++ b/engines/wage/gui.cpp @@ -588,6 +588,11 @@ void Gui::regenWeaponsMenu() { _menu->regenWeaponsMenu(); } +void Gui::processMenuShortCut(byte flags, uint16 ascii) { + _menu->processMenuShortCut(flags, ascii); +} + + void Gui::mouseMove(int x, int y) { if (_menu->_menuActivated) { if (_menu->mouseMove(x, y)) diff --git a/engines/wage/gui.h b/engines/wage/gui.h index 5f15067063..b5f84e0c80 100644 --- a/engines/wage/gui.h +++ b/engines/wage/gui.h @@ -100,6 +100,7 @@ public: const Graphics::Font *getFont(const char *name, Graphics::FontManager::FontUsage fallback); void regenCommandsMenu(); void regenWeaponsMenu(); + void processMenuShortCut(byte flags, uint16 ascii); private: void paintBorder(Graphics::Surface *g, Common::Rect &r, WindowType windowType); diff --git a/engines/wage/menu.cpp b/engines/wage/menu.cpp index a0d5dcd46b..5fc51bcf8f 100644 --- a/engines/wage/menu.cpp +++ b/engines/wage/menu.cpp @@ -46,6 +46,7 @@ */ #include "common/system.h" +#include "common/keyboard.h" #include "wage/wage.h" #include "wage/entities.h" @@ -550,4 +551,20 @@ void Menu::executeCommand(MenuSubItem *subitem) { } } +void Menu::processMenuShortCut(byte flags, uint16 ascii) { + if (flags & (Common::KBD_CTRL | Common::KBD_META)) { + for (int i = 0; i < _items.size(); i++) + for (int j = 0; j < _items[i]->subitems.size(); j++) + if (_items[i]->subitems[j]->shortcut == ascii) { + if (_items[i]->subitems[j]->action == kMenuActionCommand) + _gui->_engine->processTurn(&_items[i]->subitems[j]->text, NULL); + else + warning("STUB: Unhandled shortcut"); + + break; + } + } +} + + } // End of namespace Wage diff --git a/engines/wage/menu.h b/engines/wage/menu.h index 82c0106a7b..d817cf3734 100644 --- a/engines/wage/menu.h +++ b/engines/wage/menu.h @@ -75,6 +75,7 @@ public: void regenCommandsMenu(); void regenWeaponsMenu(); + void processMenuShortCut(byte flags, uint16 ascii); bool _menuActivated; Common::Rect _bbox; diff --git a/engines/wage/wage.cpp b/engines/wage/wage.cpp index b4819cba9d..3d3fc6a293 100644 --- a/engines/wage/wage.cpp +++ b/engines/wage/wage.cpp @@ -176,8 +176,10 @@ void WageEngine::processEvents() { break; default: - if (event.kbd.flags & Common::KBD_ALT || event.kbd.flags & Common::KBD_CTRL) { - warning("STUB: Shortcuts"); + if (event.kbd.flags & (Common::KBD_ALT | Common::KBD_CTRL | Common::KBD_META)) { + if (event.kbd.ascii >= 0x20 && event.kbd.ascii <= 0x7f) { + _gui->processMenuShortCut(event.kbd.flags, event.kbd.ascii); + } break; } |