[Scummvm-git-logs] scummvm master -> 133552a89af6e5db70cd0d5209348fbf48270086
OMGPizzaGuy
48367439+OMGPizzaGuy at users.noreply.github.com
Sat Nov 13 05:09:21 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
133552a89a ULTIMA8: Fix joystick virtual mouse when modal gumps are opened.
Commit: 133552a89af6e5db70cd0d5209348fbf48270086
https://github.com/scummvm/scummvm/commit/133552a89af6e5db70cd0d5209348fbf48270086
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2021-11-12T23:09:05-06:00
Commit Message:
ULTIMA8: Fix joystick virtual mouse when modal gumps are opened.
Modal gumps includes menus, books, scrolls, plaques, the shape viewer, and more. Additionally, player movement will stop when when modal gumps are opened.
Changed paths:
engines/ultima/ultima8/gumps/cru_menu_gump.cpp
engines/ultima/ultima8/gumps/menu_gump.cpp
engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
engines/ultima/ultima8/meta_engine.cpp
engines/ultima/ultima8/meta_engine.h
engines/ultima/ultima8/ultima8.cpp
diff --git a/engines/ultima/ultima8/gumps/cru_menu_gump.cpp b/engines/ultima/ultima8/gumps/cru_menu_gump.cpp
index 420a715d78..67bf33db69 100644
--- a/engines/ultima/ultima8/gumps/cru_menu_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_menu_gump.cpp
@@ -66,11 +66,9 @@ CruMenuGump::CruMenuGump()
// Play the menu music
musicprocess->playMusic(track);
}
- MetaEngine::setGameMenuActive(true);
}
CruMenuGump::~CruMenuGump() {
- MetaEngine::setGameMenuActive(false);
}
void CruMenuGump::Close(bool no_del) {
diff --git a/engines/ultima/ultima8/gumps/menu_gump.cpp b/engines/ultima/ultima8/gumps/menu_gump.cpp
index caa5f35b0c..ac29c78c9d 100644
--- a/engines/ultima/ultima8/gumps/menu_gump.cpp
+++ b/engines/ultima/ultima8/gumps/menu_gump.cpp
@@ -70,12 +70,9 @@ MenuGump::MenuGump(bool nameEntryMode)
PaletteManager *palman = PaletteManager::get_instance();
palman->getTransformMatrix(_oldPalTransform, PaletteManager::Pal_Game);
palman->untransformPalette(PaletteManager::Pal_Game);
-
- MetaEngine::setGameMenuActive(true);
}
MenuGump::~MenuGump() {
- MetaEngine::setGameMenuActive(false);
}
diff --git a/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp b/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
index ce5d0ca0fa..e2e0ffbb57 100644
--- a/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
+++ b/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
@@ -74,11 +74,9 @@ ShapeViewerGump::ShapeViewerGump(int x, int y, int width, int height,
}
ShapeViewerGump::~ShapeViewerGump() {
- MetaEngine::setGameMenuActive(false);
}
void ShapeViewerGump::InitGump(Gump *newparent, bool take_focus) {
- MetaEngine::setGameMenuActive(true);
ModalGump::InitGump(newparent, take_focus);
}
diff --git a/engines/ultima/ultima8/meta_engine.cpp b/engines/ultima/ultima8/meta_engine.cpp
index 6cc15354a0..fd29e80400 100644
--- a/engines/ultima/ultima8/meta_engine.cpp
+++ b/engines/ultima/ultima8/meta_engine.cpp
@@ -41,90 +41,86 @@ struct KeybindingRecord {
const uint16 _flags;
};
-enum KeybindingFlags {
- FLAG_MENU_ENABLED = 0x01
-};
-
static const KeybindingRecord COMMON_KEYS[] = {
- { ACTION_QUICKSAVE, "QUICKSAVE", "Quick Save", "GUIApp::saveGame QuickSave", nullptr, "F1", nullptr, 0 },
- { ACTION_SAVE, "SAVE", "Save Game", "GUIApp::saveGame", nullptr, "F5", nullptr, 0 },
- { ACTION_LOAD, "LOAD", "Load Game", "GUIApp::loadGame", nullptr, "F7", nullptr, 0 },
- { ACTION_COMBAT, "COMBAT", "Combat", "MainActor::toggleCombat", nullptr, "c", "JOY_X", 0 },
- { ACTION_MENU, "MENU", "Game Menu", "MenuGump::showMenu", nullptr, "ESCAPE", "JOY_Y", FLAG_MENU_ENABLED },
- { ACTION_HIGHLIGHT_ITEMS, "HIGHLIGHT_ITEMS", "Show Highlight Items", "GameMapGump::startHighlightItems", "GameMapGump::stopHighlightItems", "TAB", nullptr, 0 },
- { ACTION_TOGGLE_TOUCHING, "TOUCHING", "Show Touching Items", "GUIApp::toggleShowTouchingItems", nullptr, "h", nullptr, 0 },
- { ACTION_TURN_LEFT, "TURN_LEFT", "Turn Left", "AvatarMoverProcess::startTurnLeft", "AvatarMoverProcess::stopTurnLeft", "LEFT", nullptr, FLAG_MENU_ENABLED },
- { ACTION_TURN_RIGHT, "TURN_RIGHT", "Turn Right", "AvatarMoverProcess::startTurnRight", "AvatarMoverProcess::stopTurnRight", "RIGHT", nullptr, FLAG_MENU_ENABLED },
- { ACTION_MOVE_FORWARD, "MOVE_FORWARD", "Move Forward", "AvatarMoverProcess::startMoveForward", "AvatarMoverProcess::stopMoveForward", "UP", nullptr, FLAG_MENU_ENABLED },
- { ACTION_MOVE_BACK, "MOVE_BACK", "Move Back", "AvatarMoverProcess::startMoveBack", "AvatarMoverProcess::stopMoveBack", "DOWN", nullptr, FLAG_MENU_ENABLED },
- { ACTION_MOVE_UP, "MOVE_UP", "Move Up", "AvatarMoverProcess::startMoveUp", "AvatarMoverProcess::stopMoveUp", nullptr, "JOY_UP", FLAG_MENU_ENABLED },
- { ACTION_MOVE_DOWN, "MOVE_DOWN", "Move Down", "AvatarMoverProcess::startMoveDown", "AvatarMoverProcess::stopMoveDown", nullptr, "JOY_DOWN", FLAG_MENU_ENABLED },
- { ACTION_MOVE_LEFT, "MOVE_LEFT", "Move Left", "AvatarMoverProcess::startMoveLeft", "AvatarMoverProcess::stopMoveLeft", nullptr, "JOY_LEFT", FLAG_MENU_ENABLED },
- { ACTION_MOVE_RIGHT, "MOVE_RIGHT", "Move Right", "AvatarMoverProcess::startMoveRight", "AvatarMoverProcess::stopMoveRight", nullptr, "JOY_RIGHT", FLAG_MENU_ENABLED },
- { ACTION_MOVE_RUN, "MOVE_RUN", "Run", "AvatarMoverProcess::startMoveRun", "AvatarMoverProcess::stopMoveRun", "LSHIFT", "JOY_RIGHT_TRIGGER", FLAG_MENU_ENABLED },
-
- { ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0 }
+ { ACTION_QUICKSAVE, "QUICKSAVE", "Quick Save", "GUIApp::saveGame QuickSave", nullptr, "F1", nullptr },
+ { ACTION_SAVE, "SAVE", "Save Game", "GUIApp::saveGame", nullptr, "F5", nullptr },
+ { ACTION_LOAD, "LOAD", "Load Game", "GUIApp::loadGame", nullptr, "F7", nullptr },
+ { ACTION_COMBAT, "COMBAT", "Combat", "MainActor::toggleCombat", nullptr, "c", "JOY_X" },
+ { ACTION_MENU, "MENU", "Game Menu", "MenuGump::showMenu", nullptr, "ESCAPE", "JOY_Y" },
+ { ACTION_HIGHLIGHT_ITEMS, "HIGHLIGHT_ITEMS", "Show Highlight Items", "GameMapGump::startHighlightItems", "GameMapGump::stopHighlightItems", "TAB", nullptr },
+ { ACTION_TOGGLE_TOUCHING, "TOUCHING", "Show Touching Items", "GUIApp::toggleShowTouchingItems", nullptr, "h", nullptr },
+ { ACTION_TURN_LEFT, "TURN_LEFT", "Turn Left", "AvatarMoverProcess::startTurnLeft", "AvatarMoverProcess::stopTurnLeft", "LEFT", nullptr },
+ { ACTION_TURN_RIGHT, "TURN_RIGHT", "Turn Right", "AvatarMoverProcess::startTurnRight", "AvatarMoverProcess::stopTurnRight", "RIGHT", nullptr },
+ { ACTION_MOVE_FORWARD, "MOVE_FORWARD", "Move Forward", "AvatarMoverProcess::startMoveForward", "AvatarMoverProcess::stopMoveForward", "UP", nullptr },
+ { ACTION_MOVE_BACK, "MOVE_BACK", "Move Back", "AvatarMoverProcess::startMoveBack", "AvatarMoverProcess::stopMoveBack", "DOWN", nullptr },
+ { ACTION_MOVE_UP, "MOVE_UP", "Move Up", "AvatarMoverProcess::startMoveUp", "AvatarMoverProcess::stopMoveUp", nullptr, "JOY_UP" },
+ { ACTION_MOVE_DOWN, "MOVE_DOWN", "Move Down", "AvatarMoverProcess::startMoveDown", "AvatarMoverProcess::stopMoveDown", nullptr, "JOY_DOWN" },
+ { ACTION_MOVE_LEFT, "MOVE_LEFT", "Move Left", "AvatarMoverProcess::startMoveLeft", "AvatarMoverProcess::stopMoveLeft", nullptr, "JOY_LEFT" },
+ { ACTION_MOVE_RIGHT, "MOVE_RIGHT", "Move Right", "AvatarMoverProcess::startMoveRight", "AvatarMoverProcess::stopMoveRight", nullptr, "JOY_RIGHT" },
+ { ACTION_MOVE_RUN, "MOVE_RUN", "Run", "AvatarMoverProcess::startMoveRun", "AvatarMoverProcess::stopMoveRun", "LSHIFT", "JOY_RIGHT_TRIGGER" },
+
+ { ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }
};
static const KeybindingRecord U8_KEYS[] = {
- { ACTION_BEDROLL, "BEDROLL", "Bedroll", "MainActor::useBedroll", nullptr, "b", nullptr, 0 },
- { ACTION_BACKPACK, "BACKPACK", "Use Backpack", "MainActor::useBackpack", nullptr, "i", nullptr, 0 },
- { ACTION_KEYRING, "KEYRING", "Keyring", "MainActor::useKeyring", nullptr, "k", nullptr, 0 },
- { ACTION_MINIMAP, "MINIMAP", "Toggle Minimap", "MiniMapGump::toggle", nullptr, "m", "JOY_LEFT_TRIGGER", 0 },
- { ACTION_RECALL, "RECALL", "Use Recall", "MainActor::useRecall", nullptr, "r", nullptr, 0 },
- { ACTION_INVENTORY, "INVENTORY", "Inventory", "MainActor::useInventory", nullptr, "z", "JOY_LEFT_SHOULDER", 0 },
- { ACTION_CLOSE_GUMPS, "CLOSE_GUMPS", "Close Gumps", "GUIApp::closeItemGumps", nullptr, "BACKSPACE", nullptr, 0 },
- { ACTION_JUMP, "JUMP", "Jump (fake both-button-click)", "AvatarMoverProcess::startJump", "AvatarMoverProcess::stopJump", "SPACE", nullptr, FLAG_MENU_ENABLED },
- { ACTION_MOVE_STEP, "MOVE_STEP", "Step", "AvatarMoverProcess::startMoveStep", "AvatarMoverProcess::stopMoveStep", "LCTRL", "JOY_RIGHT_SHOULDER", FLAG_MENU_ENABLED },
-
- { ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0 }
+ { ACTION_BEDROLL, "BEDROLL", "Bedroll", "MainActor::useBedroll", nullptr, "b", nullptr },
+ { ACTION_BACKPACK, "BACKPACK", "Use Backpack", "MainActor::useBackpack", nullptr, "i", nullptr },
+ { ACTION_KEYRING, "KEYRING", "Keyring", "MainActor::useKeyring", nullptr, "k", nullptr },
+ { ACTION_MINIMAP, "MINIMAP", "Toggle Minimap", "MiniMapGump::toggle", nullptr, "m", "JOY_LEFT_TRIGGER" },
+ { ACTION_RECALL, "RECALL", "Use Recall", "MainActor::useRecall", nullptr, "r", nullptr },
+ { ACTION_INVENTORY, "INVENTORY", "Inventory", "MainActor::useInventory", nullptr, "z", "JOY_LEFT_SHOULDER" },
+ { ACTION_CLOSE_GUMPS, "CLOSE_GUMPS", "Close Gumps", "GUIApp::closeItemGumps", nullptr, "BACKSPACE", nullptr },
+ { ACTION_JUMP, "JUMP", "Jump (fake both-button-click)", "AvatarMoverProcess::startJump", "AvatarMoverProcess::stopJump", "SPACE", nullptr },
+ { ACTION_MOVE_STEP, "MOVE_STEP", "Step", "AvatarMoverProcess::startMoveStep", "AvatarMoverProcess::stopMoveStep", "LCTRL", "JOY_RIGHT_SHOULDER" },
+
+ { ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }
};
static const KeybindingRecord CRUSADER_KEYS[] = {
- { ACTION_NEXT_WEAPON, "NEXT_WEAPON", "Next Weapon", "MainActor::nextWeapon", nullptr, "w", nullptr, 0 },
- { ACTION_NEXT_INVENTORY, "NEXT_INVENTORY", "Next Inventory Item", "MainActor::nextInvItem", nullptr, "i", nullptr, 0 },
- { ACTION_USE_INVENTORY, "USE_INVENTORY", "Use Inventroy Item", "MainActor::useInventoryItem", nullptr, "u", nullptr, 0 },
- { ACTION_USE_MEDIKIT, "USE_MEDIKIT", "Use Medical Kit", "MainActor::useMedikit", nullptr, "m", nullptr, 0 },
- { ACTION_USE_ENERGYCUBE, "USE_ENERGYCUBE", "Use Energy Cube", "MainActor::useEnergyCube", nullptr, "e", nullptr, 0 },
- { ACTION_DETONATE_BOMB, "DETONATE_BOMB", "Detonate Bomb", "MainActor::detonateBomb", nullptr, "b", nullptr, 0 },
- { ACTION_SELECT_ITEMS, "SELECT_ITEM", "Select Item", "ItemSelectionProcess::startSelection", nullptr, "s", nullptr, 0 },
- { ACTION_USE_SELECTION, "USE_SELECTION", "Use Selection", "ItemSelectionProcess::useSelectedItem", nullptr, "RETURN", nullptr, 0 },
- { ACTION_GRAB_ITEMS, "GRAB_ITEM", "Grab Items", "ItemSelectionProcess::grabItems", nullptr, "g", nullptr, 0 },
- { ACTION_ATTACK, "ATTACK", "Attack", "AvatarMoverProcess::startAttack", "AvatarMoverProcess::stopAttack", "SPACE", nullptr, 0 },
- { ACTION_CAMERA_AVATAR, "CAMERA_AVATAR", "Focus Camera on Silencer", "CameraProcess::moveToAvatar", nullptr, "z", nullptr, 0 },
- { ACTION_JUMP, "JUMP", "Jump / Roll / Crouch", "AvatarMoverProcess::startJump", "AvatarMoverProcess::stopJump", "LCTRL", nullptr, FLAG_MENU_ENABLED },
- { ACTION_MOVE_STEP, "MOVE_STEP", "Side Step / Advance / Retreat", "AvatarMoverProcess::startMoveStep", "AvatarMoverProcess::stopMoveStep", "LALT", "JOY_RIGHT_SHOULDER", FLAG_MENU_ENABLED },
- { ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0 }
+ { ACTION_NEXT_WEAPON, "NEXT_WEAPON", "Next Weapon", "MainActor::nextWeapon", nullptr, "w", nullptr },
+ { ACTION_NEXT_INVENTORY, "NEXT_INVENTORY", "Next Inventory Item", "MainActor::nextInvItem", nullptr, "i", nullptr },
+ { ACTION_USE_INVENTORY, "USE_INVENTORY", "Use Inventroy Item", "MainActor::useInventoryItem", nullptr, "u", nullptr },
+ { ACTION_USE_MEDIKIT, "USE_MEDIKIT", "Use Medical Kit", "MainActor::useMedikit", nullptr, "m", nullptr },
+ { ACTION_USE_ENERGYCUBE, "USE_ENERGYCUBE", "Use Energy Cube", "MainActor::useEnergyCube", nullptr, "e", nullptr },
+ { ACTION_DETONATE_BOMB, "DETONATE_BOMB", "Detonate Bomb", "MainActor::detonateBomb", nullptr, "b", nullptr },
+ { ACTION_SELECT_ITEMS, "SELECT_ITEM", "Select Item", "ItemSelectionProcess::startSelection", nullptr, "s", nullptr },
+ { ACTION_USE_SELECTION, "USE_SELECTION", "Use Selection", "ItemSelectionProcess::useSelectedItem", nullptr, "RETURN", nullptr },
+ { ACTION_GRAB_ITEMS, "GRAB_ITEM", "Grab Items", "ItemSelectionProcess::grabItems", nullptr, "g", nullptr },
+ { ACTION_ATTACK, "ATTACK", "Attack", "AvatarMoverProcess::startAttack", "AvatarMoverProcess::stopAttack", "SPACE", nullptr },
+ { ACTION_CAMERA_AVATAR, "CAMERA_AVATAR", "Focus Camera on Silencer", "CameraProcess::moveToAvatar", nullptr, "z", nullptr },
+ { ACTION_JUMP, "JUMP", "Jump / Roll / Crouch", "AvatarMoverProcess::startJump", "AvatarMoverProcess::stopJump", "LCTRL", nullptr },
+ { ACTION_MOVE_STEP, "MOVE_STEP", "Side Step / Advance / Retreat", "AvatarMoverProcess::startMoveStep", "AvatarMoverProcess::stopMoveStep", "LALT", "JOY_RIGHT_SHOULDER" },
+ { ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }
};
static const KeybindingRecord CHEAT_KEYS[] = {
- { ACTION_CLIPPING, "CLIPPING", "Toggle Clipping", "QuickAvatarMoverProcess::toggleClipping", nullptr, "INSERT", nullptr, 0 },
- { ACTION_QUICK_MOVE_ASCEND, "ASCEND", "Ascend", "QuickAvatarMoverProcess::startAscend", "QuickAvatarMoverProcess::stopAscend", "HOME", nullptr, 0 },
- { ACTION_QUICK_MOVE_DESCEND, "DESCEND", "Descend", "QuickAvatarMoverProcess::startDescend", "QuickAvatarMoverProcess::stopDescend", "END", nullptr, FLAG_MENU_ENABLED },
- { ACTION_QUICK_MOVE_UP, "MOVE_UP", "Move Up", "QuickAvatarMoverProcess::startMoveUp", "QuickAvatarMoverProcess::stopMoveUp", "M+UP", nullptr, FLAG_MENU_ENABLED },
- { ACTION_QUICK_MOVE_DOWN, "MOVE_DOWN", "Move Down", "QuickAvatarMoverProcess::startMoveDown", "QuickAvatarMoverProcess::stopMoveDown", "M+DOWN", nullptr, FLAG_MENU_ENABLED },
- { ACTION_QUICK_MOVE_LEFT, "MOVE_LEFT", "Move Left", "QuickAvatarMoverProcess::startMoveLeft", "QuickAvatarMoverProcess::stopMoveLeft", "M+LEFT", nullptr, FLAG_MENU_ENABLED },
- { ACTION_QUICK_MOVE_RIGHT, "MOVE_RIGHT", "Move Right", "QuickAvatarMoverProcess::startMoveRight", "QuickAvatarMoverProcess::stopMoveRight", "M+RIGHT", nullptr, FLAG_MENU_ENABLED },
-
- { ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0 }
+ { ACTION_CLIPPING, "CLIPPING", "Toggle Clipping", "QuickAvatarMoverProcess::toggleClipping", nullptr, "INSERT", nullptr },
+ { ACTION_QUICK_MOVE_ASCEND, "ASCEND", "Ascend", "QuickAvatarMoverProcess::startAscend", "QuickAvatarMoverProcess::stopAscend", "HOME", nullptr },
+ { ACTION_QUICK_MOVE_DESCEND, "DESCEND", "Descend", "QuickAvatarMoverProcess::startDescend", "QuickAvatarMoverProcess::stopDescend", "END", nullptr },
+ { ACTION_QUICK_MOVE_UP, "MOVE_UP", "Move Up", "QuickAvatarMoverProcess::startMoveUp", "QuickAvatarMoverProcess::stopMoveUp", "M+UP", nullptr },
+ { ACTION_QUICK_MOVE_DOWN, "MOVE_DOWN", "Move Down", "QuickAvatarMoverProcess::startMoveDown", "QuickAvatarMoverProcess::stopMoveDown", "M+DOWN", nullptr },
+ { ACTION_QUICK_MOVE_LEFT, "MOVE_LEFT", "Move Left", "QuickAvatarMoverProcess::startMoveLeft", "QuickAvatarMoverProcess::stopMoveLeft", "M+LEFT", nullptr },
+ { ACTION_QUICK_MOVE_RIGHT, "MOVE_RIGHT", "Move Right", "QuickAvatarMoverProcess::startMoveRight", "QuickAvatarMoverProcess::stopMoveRight", "M+RIGHT", nullptr },
+
+ { ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }
};
#ifndef RELEASE_BUILD
static const KeybindingRecord DEBUG_KEYS[] = {
- { ACTION_TOGGLE_PAINT, "TOGGLE_PAINT", "Toggle Paint Editor Items", "GUIApp::togglePaintEditorItems", nullptr, "F9", nullptr, 0 },
- { ACTION_DEC_SORT_ORDER, "DEC_SORT_ORDER", "Decrement Map Sort Order", "GameMapGump::decrementSortOrder", nullptr, "LEFTBRACKET", nullptr, 0 },
- { ACTION_INC_SORT_ORDER, "INC_SORT_ORDER", "Increment Map Sort Order", "GameMapGump::incrementSortOrder", nullptr, "RIGHTBRACKET", nullptr, 0 },
- { ACTION_ENGINE_STATS, "STATS", "List engine stats", "GUIApp::engineStats", nullptr, "t", nullptr, 0 },
- { ACTION_FRAME_BY_FRAME, "FRAME_BY_FRAME", "Toggle Frame By Frame", "Kernel::toggleFrameByFrame", nullptr, "F12", nullptr, 0 },
- { ACTION_ADVANCE_FRAME, "ADVANCE_FRAME", "Advance Frame", "Kernel::advanceFrame", nullptr, "f", nullptr, 0 },
- { ACTION_TOGGLE_STASIS, "TOGGLE_STASIS", "Toggle Avatar In Stasis", "GUIApp::toggleAvatarInStasis", nullptr, "F10", nullptr, 0 },
- { ACTION_SHAPE_VIEWER, "SHAPE_VIEWER", "Show Shape Viewer", "ShapeViewerGump::U8ShapeViewer", nullptr, "F11", nullptr, 0 },
-
- { ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0 }
+ { ACTION_TOGGLE_PAINT, "TOGGLE_PAINT", "Toggle Paint Editor Items", "GUIApp::togglePaintEditorItems", nullptr, "F9", nullptr },
+ { ACTION_DEC_SORT_ORDER, "DEC_SORT_ORDER", "Decrement Map Sort Order", "GameMapGump::decrementSortOrder", nullptr, "LEFTBRACKET", nullptr },
+ { ACTION_INC_SORT_ORDER, "INC_SORT_ORDER", "Increment Map Sort Order", "GameMapGump::incrementSortOrder", nullptr, "RIGHTBRACKET", nullptr },
+ { ACTION_ENGINE_STATS, "STATS", "List engine stats", "GUIApp::engineStats", nullptr, "t", nullptr },
+ { ACTION_FRAME_BY_FRAME, "FRAME_BY_FRAME", "Toggle Frame By Frame", "Kernel::toggleFrameByFrame", nullptr, "F12", nullptr },
+ { ACTION_ADVANCE_FRAME, "ADVANCE_FRAME", "Advance Frame", "Kernel::advanceFrame", nullptr, "f", nullptr },
+ { ACTION_TOGGLE_STASIS, "TOGGLE_STASIS", "Toggle Avatar In Stasis", "GUIApp::toggleAvatarInStasis", nullptr, "F10", nullptr },
+ { ACTION_SHAPE_VIEWER, "SHAPE_VIEWER", "Show Shape Viewer", "ShapeViewerGump::U8ShapeViewer", nullptr, "F11", nullptr },
+
+ { ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }
};
#endif
-Common::KeymapArray MetaEngine::initKeymaps(const Common::String &gameId, bool isMenuActive) {
+Common::KeymapArray MetaEngine::initKeymaps(const Common::String &gameId) {
Common::KeymapArray keymapArray;
// Core keymaps
@@ -148,29 +144,25 @@ Common::KeymapArray MetaEngine::initKeymaps(const Common::String &gameId, bool i
keyMap->addAction(act);
for (const KeybindingRecord *r = COMMON_KEYS; r->_id; ++r) {
- if (!isMenuActive || (r->_flags & FLAG_MENU_ENABLED)) {
- act = new Common::Action(r->_id, _(r->_desc));
- act->setCustomEngineActionEvent(r->_action);
- if (r->_key)
- act->addDefaultInputMapping(r->_key);
- if (r->_joy)
- act->addDefaultInputMapping(r->_joy);
- keyMap->addAction(act);
- }
+ act = new Common::Action(r->_id, _(r->_desc));
+ act->setCustomEngineActionEvent(r->_action);
+ if (r->_key)
+ act->addDefaultInputMapping(r->_key);
+ if (r->_joy)
+ act->addDefaultInputMapping(r->_joy);
+ keyMap->addAction(act);
}
// Game specific keymaps
const KeybindingRecord *game_keys = (gameId.equals("ultima8") ? U8_KEYS : CRUSADER_KEYS);
for (const KeybindingRecord *r = game_keys; r->_id; ++r) {
- if (!isMenuActive || (r->_flags & FLAG_MENU_ENABLED)) {
- act = new Common::Action(r->_id, _(r->_desc));
- act->setCustomEngineActionEvent(r->_action);
- if (r->_key)
- act->addDefaultInputMapping(r->_key);
- if (r->_joy)
- act->addDefaultInputMapping(r->_joy);
- keyMap->addAction(act);
- }
+ act = new Common::Action(r->_id, _(r->_desc));
+ act->setCustomEngineActionEvent(r->_action);
+ if (r->_key)
+ act->addDefaultInputMapping(r->_key);
+ if (r->_joy)
+ act->addDefaultInputMapping(r->_joy);
+ keyMap->addAction(act);
}
@@ -179,15 +171,13 @@ Common::KeymapArray MetaEngine::initKeymaps(const Common::String &gameId, bool i
keymapArray.push_back(keyMap);
for (const KeybindingRecord *r = CHEAT_KEYS; r->_id; ++r) {
- if (!isMenuActive || (r->_flags & FLAG_MENU_ENABLED)) {
- act = new Common::Action(r->_id, _(r->_desc));
- act->setCustomEngineActionEvent(r->_action);
- if (r->_key)
- act->addDefaultInputMapping(r->_key);
- if (r->_joy)
- act->addDefaultInputMapping(r->_joy);
- keyMap->addAction(act);
- }
+ act = new Common::Action(r->_id, _(r->_desc));
+ act->setCustomEngineActionEvent(r->_action);
+ if (r->_key)
+ act->addDefaultInputMapping(r->_key);
+ if (r->_joy)
+ act->addDefaultInputMapping(r->_joy);
+ keyMap->addAction(act);
}
#ifndef RELEASE_BUILD
@@ -196,39 +186,19 @@ Common::KeymapArray MetaEngine::initKeymaps(const Common::String &gameId, bool i
keymapArray.push_back(keyMap);
for (const KeybindingRecord *r = DEBUG_KEYS; r->_id; ++r) {
- if (!isMenuActive || (r->_flags & FLAG_MENU_ENABLED)) {
- act = new Common::Action(r->_id, _(r->_desc));
- act->setCustomEngineActionEvent(r->_action);
- if (r->_key)
- act->addDefaultInputMapping(r->_key);
- if (r->_joy)
- act->addDefaultInputMapping(r->_joy);
- keyMap->addAction(act);
- }
+ act = new Common::Action(r->_id, _(r->_desc));
+ act->setCustomEngineActionEvent(r->_action);
+ if (r->_key)
+ act->addDefaultInputMapping(r->_key);
+ if (r->_joy)
+ act->addDefaultInputMapping(r->_joy);
+ keyMap->addAction(act);
}
#endif
return keymapArray;
}
-void MetaEngine::setTextInputActive(bool isActive) {
- Common::Keymapper *const mapper = g_engine->getEventManager()->getKeymapper();
- mapper->setEnabled(!isActive);
-}
-
-void MetaEngine::setGameMenuActive(bool isActive) {
- Common::Keymapper *const mapper = g_engine->getEventManager()->getKeymapper();
- mapper->cleanupGameKeymaps();
-
- const Common::String gameId = Ultima8Engine::get_instance()->getGameInfo()->_name;
-
- Common::KeymapArray arr = initKeymaps(gameId, isActive);
-
- for (uint idx = 0; idx < arr.size(); ++idx)
- mapper->addGameKeymap(arr[idx]);
-}
-
-
void MetaEngine::pressAction(KeybindingAction keyAction) {
Common::String methodName = getMethod(keyAction, true);
if (!methodName.empty())
diff --git a/engines/ultima/ultima8/meta_engine.h b/engines/ultima/ultima8/meta_engine.h
index 02f209b72b..0f3779e1cc 100644
--- a/engines/ultima/ultima8/meta_engine.h
+++ b/engines/ultima/ultima8/meta_engine.h
@@ -65,7 +65,7 @@ public:
/**
* Initialize keymaps
*/
- static Common::KeymapArray initKeymaps(const Common::String &gameId, bool isMenuActive = false);
+ static Common::KeymapArray initKeymaps(const Common::String &gameId);
/**
* Execute an engine keymap press action
@@ -76,16 +76,6 @@ public:
* Execute an engine keymap release action
*/
static void releaseAction(KeybindingAction keyAction);
-
- /**
- * Enables/disables keymaps based on whether text input is active
- */
- static void setTextInputActive(bool isActive);
-
- /**
- * Enables/disables keymaps based on whether the in-game menu is active
- */
- static void setGameMenuActive(bool isActive);
};
} // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 4a59268fe4..1ac5c63490 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -734,23 +734,60 @@ void Ultima8Engine::enterTextMode(Gump *gump) {
}
_textModes.push_front(gump->getObjId());
- MetaEngine::setTextInputActive(true);
+ _avatarMoverProcess->clearMovementFlag(AvatarMoverProcess::MOVE_ANY_DIRECTION);
+ _avatarMoverProcess->clearMovementFlag(AvatarMoverProcess::MOVE_JUMP);
}
void Ultima8Engine::leaveTextMode(Gump *gump) {
if (!_textModes.empty())
_textModes.remove(gump->getObjId());
-
- if (_textModes.empty())
- MetaEngine::setTextInputActive(false);
}
void Ultima8Engine::handleEvent(const Common::Event &event) {
+ // Text mode input. A few hacks here
+ Gump *gump = nullptr;
+ while (!_textModes.empty()) {
+ gump = dynamic_cast<Gump *>(_objectManager->getObject(_textModes.front()));
+ if (gump)
+ break;
+
+ _textModes.pop_front();
+ }
+
+ Common::Keymapper *const keymapper = _eventMan->getKeymapper();
+ keymapper->setEnabledKeymapType(gump ? Common::Keymap::kKeymapTypeGui : Common::Keymap::kKeymapTypeGame);
+
switch (event.type) {
case Common::EVENT_KEYDOWN:
+ if (gump) {
+ // Paste from Clip-Board on Ctrl-V - Note this should be a flag of some sort
+ if (event.kbd.keycode == Common::KEYCODE_v && (event.kbd.flags & Common::KBD_CTRL)) {
+ if (!g_system->hasTextInClipboard())
+ return;
+
+ Common::String text = g_system->getTextFromClipboard();
+
+ // Only read the first line of text
+ while (!text.empty() && text.firstChar() >= ' ')
+ gump->OnTextInput(text.firstChar());
+
+ return;
+ }
+
+ if (event.kbd.ascii >= ' ' &&
+ event.kbd.ascii <= 255 &&
+ !(event.kbd.ascii >= 0x7F && // control chars
+ event.kbd.ascii <= 0x9F)) {
+ gump->OnTextInput(event.kbd.ascii);
+ }
+
+ gump->OnKeyDown(event.kbd.keycode, event.kbd.flags);
+ }
break;
case Common::EVENT_KEYUP:
- // Any system keys not in the bindings can be handled here
+ if (gump) {
+ gump->OnKeyUp(event.kbd.keycode);
+ }
break;
case Common::EVENT_MOUSEMOVE:
@@ -787,11 +824,11 @@ void Ultima8Engine::handleEvent(const Common::Event &event) {
case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
MetaEngine::pressAction((KeybindingAction)event.customType);
- return;
+ break;
case Common::EVENT_CUSTOM_ENGINE_ACTION_END:
MetaEngine::releaseAction((KeybindingAction)event.customType);
- return;
+ break;
case Common::EVENT_QUIT:
case Common::EVENT_RETURN_TO_LAUNCHER:
@@ -801,55 +838,6 @@ void Ultima8Engine::handleEvent(const Common::Event &event) {
default:
break;
}
-
- // Text mode input. A few hacks here
- Gump *gump = nullptr;
- while (!_textModes.empty()) {
- gump = dynamic_cast<Gump *>(_objectManager->getObject(_textModes.front()));
- if (gump)
- break;
-
- _textModes.pop_front();
- if (_textModes.empty()) {
- MetaEngine::setTextInputActive(false);
- }
- }
-
- if (gump) {
- switch (event.type) {
- case Common::EVENT_KEYDOWN:
- // Paste from Clip-Board on Ctrl-V - Note this should be a flag of some sort
- if (event.kbd.keycode == Common::KEYCODE_v && (event.kbd.flags & Common::KBD_CTRL)) {
- if (!g_system->hasTextInClipboard())
- return;
-
- Common::String text = g_system->getTextFromClipboard();
-
- // Only read the first line of text
- while (!text.empty() && text.firstChar() >= ' ')
- gump->OnTextInput(text.firstChar());
-
- return;
- }
-
- if (event.kbd.ascii >= ' ' &&
- event.kbd.ascii <= 255 &&
- !(event.kbd.ascii >= 0x7F && // control chars
- event.kbd.ascii <= 0x9F)) {
- gump->OnTextInput(event.kbd.ascii);
- }
-
- gump->OnKeyDown(event.kbd.keycode, event.kbd.flags);
- return;
-
- case Common::EVENT_KEYUP:
- gump->OnKeyUp(event.kbd.keycode);
- return;
-
- default:
- break;
- }
- }
}
void Ultima8Engine::handleDelayedEvents() {
@@ -1128,7 +1116,6 @@ void Ultima8Engine::resetEngine() {
_inverterGump = nullptr;
_textModes.clear();
- MetaEngine::setTextInputActive(false);
// reset mouse cursor
_mouse->popAllCursors();
More information about the Scummvm-git-logs
mailing list