diff options
author | athrxx | 2019-01-23 20:31:54 +0100 |
---|---|---|
committer | athrxx | 2019-01-23 20:36:05 +0100 |
commit | e8ee079b86f683f5faa4cb54f5f358ff7a684081 (patch) | |
tree | 313461099beae25a2d4d60d062bfa732bacca263 | |
parent | 0a9ad229a89a04b2fe437597584684f43479ca14 (diff) | |
download | scummvm-rg350-e8ee079b86f683f5faa4cb54f5f358ff7a684081.tar.gz scummvm-rg350-e8ee079b86f683f5faa4cb54f5f358ff7a684081.tar.bz2 scummvm-rg350-e8ee079b86f683f5faa4cb54f5f358ff7a684081.zip |
KYRA: (EOB) - allow swapping L/R buttons via GMM
This adds an engine specific GMM option that allows to swap L/R mouse button actions when clicking on the character weapon slots (which might improve the game experience for tablet users).
-rw-r--r-- | engines/kyra/detection.cpp | 12 | ||||
-rw-r--r-- | engines/kyra/detection_tables.h | 13 | ||||
-rw-r--r-- | engines/kyra/eobcommon.cpp | 4 | ||||
-rw-r--r-- | engines/kyra/eobcommon.h | 1 | ||||
-rw-r--r-- | engines/kyra/gui_eob.cpp | 4 |
5 files changed, 27 insertions, 7 deletions
diff --git a/engines/kyra/detection.cpp b/engines/kyra/detection.cpp index 9f1b694006..0c345cc52a 100644 --- a/engines/kyra/detection.cpp +++ b/engines/kyra/detection.cpp @@ -130,6 +130,18 @@ const ADExtraGuiOptionsMap gameGuiOptions[] = { true } }, + + { + GAMEOPTION_EOB_MOUSESWAP, + { + // I18N: L/R stands for Left/Right + _s("Fight Button L/R Swap"), + _s("Left button to attack, right button to pick up items"), + "mousebtswap", + false + } + }, + #endif AD_EXTRA_GUI_OPTIONS_TERMINATOR diff --git a/engines/kyra/detection_tables.h b/engines/kyra/detection_tables.h index 81dd56f798..da0a2dee0b 100644 --- a/engines/kyra/detection_tables.h +++ b/engines/kyra/detection_tables.h @@ -71,6 +71,7 @@ namespace { #define GAMEOPTION_LOL_CURSORS GUIO_GAMEOPTIONS5 #define GAMEOPTION_EOB_HPGRAPHS GUIO_GAMEOPTIONS6 +#define GAMEOPTION_EOB_MOUSESWAP GUIO_GAMEOPTIONS7 const KYRAGameDescription adGameDescs[] = { /* disable these targets until they get supported @@ -1616,7 +1617,7 @@ const KYRAGameDescription adGameDescs[] = { Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, - GUIO7(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS) + GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP) }, EOB_FLAGS }, @@ -1632,7 +1633,7 @@ const KYRAGameDescription adGameDescs[] = { Common::DE_DEU, Common::kPlatformDOS, ADGF_NO_FLAGS, - GUIO7(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS) + GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP) }, EOB_FLAGS }, @@ -1648,7 +1649,7 @@ const KYRAGameDescription adGameDescs[] = { Common::IT_ITA, Common::kPlatformDOS, ADGF_NO_FLAGS, - GUIO7(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS) + GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP) }, EOB_FLAGS }, @@ -1664,7 +1665,7 @@ const KYRAGameDescription adGameDescs[] = { Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, - GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS) + GUIO7(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP) }, EOB2_FLAGS }, @@ -1680,7 +1681,7 @@ const KYRAGameDescription adGameDescs[] = { Common::DE_DEU, Common::kPlatformDOS, ADGF_NO_FLAGS, - GUIO6(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS) + GUIO7(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP) }, EOB2_FLAGS }, @@ -1696,7 +1697,7 @@ const KYRAGameDescription adGameDescs[] = { Common::JA_JPN, Common::kPlatformFMTowns, ADGF_NO_FLAGS, - GUIO4(GUIO_NOSPEECH, GUIO_MIDITOWNS, GUIO_RENDERFMTOWNS, GAMEOPTION_EOB_HPGRAPHS) + GUIO5(GUIO_NOSPEECH, GUIO_MIDITOWNS, GUIO_RENDERFMTOWNS, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP) }, EOB2_FMTOWNS_FLAGS }, diff --git a/engines/kyra/eobcommon.cpp b/engines/kyra/eobcommon.cpp index 11bdafabb3..9f7715b37f 100644 --- a/engines/kyra/eobcommon.cpp +++ b/engines/kyra/eobcommon.cpp @@ -121,6 +121,7 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags) _exchangeCharacterId = -1; _charExchangeSwap = 0; _configHpBarGraphs = true; + _configMouseBtSwap = false; memset(_dialogueLastBitmap, 0, 13); _npcSequenceSub = 0; @@ -595,11 +596,13 @@ Common::Error EoBCoreEngine::go() { void EoBCoreEngine::registerDefaultSettings() { KyraEngine_v1::registerDefaultSettings(); ConfMan.registerDefault("hpbargraphs", true); + ConfMan.registerDefault("mousebtswap", false); ConfMan.registerDefault("importOrigSaves", true); } void EoBCoreEngine::readSettings() { _configHpBarGraphs = ConfMan.getBool("hpbargraphs"); + _configMouseBtSwap = ConfMan.getBool("mousebtswap"); _configSounds = ConfMan.getBool("sfx_mute") ? 0 : 1; _configMusic = _configSounds ? 1 : 0; @@ -609,6 +612,7 @@ void EoBCoreEngine::readSettings() { void EoBCoreEngine::writeSettings() { ConfMan.setBool("hpbargraphs", _configHpBarGraphs); + ConfMan.setBool("mousebtswap", _configMouseBtSwap); ConfMan.setBool("sfx_mute", _configSounds == 0); if (_sound) { diff --git a/engines/kyra/eobcommon.h b/engines/kyra/eobcommon.h index e7b0f0d028..02627bf111 100644 --- a/engines/kyra/eobcommon.h +++ b/engines/kyra/eobcommon.h @@ -767,6 +767,7 @@ protected: const uint8 **_compassShapes; uint8 _charExchangeSwap; bool _configHpBarGraphs; + bool _configMouseBtSwap; Graphics::Surface _thumbNail; diff --git a/engines/kyra/gui_eob.cpp b/engines/kyra/gui_eob.cpp index 4b1002175b..c942f67577 100644 --- a/engines/kyra/gui_eob.cpp +++ b/engines/kyra/gui_eob.cpp @@ -873,7 +873,9 @@ int EoBCoreEngine::clickedWeaponSlot(Button *button) { static const uint8 sY[] = { 27, 27, 79, 79, 131, 131 }; int slot = sY[button->arg] > _mouseY ? 0 : 1; - if ((_gui->_flagsMouseLeft & 0x7F) == 1) + uint16 flags = _configMouseBtSwap ? _gui->_flagsMouseRight : _gui->_flagsMouseLeft; + + if ((flags & 0x7F) == 1) gui_processWeaponSlotClickLeft(button->arg, slot); else gui_processWeaponSlotClickRight(button->arg, slot); |