From fa00855a109e6ba11aad663c2d41d8a503f7d31d Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 6 Apr 2018 22:30:29 -0400 Subject: XEEN: Don't set a _buttonValue when Ctrl or Alt is pressed This avoids a problem where holding down Ctrl for the GMM was passing multiple turns.. very noticeable if there were monsters nearby, or the party is standing on a trap tile --- engines/xeen/dialogs/dialogs.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'engines/xeen') diff --git a/engines/xeen/dialogs/dialogs.cpp b/engines/xeen/dialogs/dialogs.cpp index 3e777ba232..f404996b56 100644 --- a/engines/xeen/dialogs/dialogs.cpp +++ b/engines/xeen/dialogs/dialogs.cpp @@ -99,15 +99,18 @@ bool ButtonContainer::checkEvents(XeenEngine *vm) { Common::KeyState keyState; events.getKey(keyState); - _buttonValue = keyState.keycode; - if (_buttonValue == Common::KEYCODE_KP8) + if (keyState.keycode == Common::KEYCODE_KP8) _buttonValue = Common::KEYCODE_UP; - else if (_buttonValue == Common::KEYCODE_KP2) + else if (keyState.keycode == Common::KEYCODE_KP2) _buttonValue = Common::KEYCODE_DOWN; - else if (_buttonValue == Common::KEYCODE_KP_ENTER) + else if (keyState.keycode == Common::KEYCODE_KP_ENTER) _buttonValue = Common::KEYCODE_RETURN; + else if (keyState.keycode != Common::KEYCODE_LCTRL && keyState.keycode != Common::KEYCODE_RCTRL + && keyState.keycode != Common::KEYCODE_LALT && keyState.keycode != Common::KEYCODE_RALT) + _buttonValue = keyState.keycode; - _buttonValue |= (keyState.flags & ~Common::KBD_STICKY) << 16; + if (_buttonValue) + _buttonValue |= (keyState.flags & ~Common::KBD_STICKY) << 16; } if (_buttonValue) { -- cgit v1.2.3