aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2017-11-24 19:20:25 -0500
committerPaul Gilbert2017-11-24 19:20:25 -0500
commite7c98ffda0107af56435f8048d000c1cdc139bf6 (patch)
tree0d7ace73ac2584e626fe2d4c8fb0fb665293ad85
parent6af295b96c0bd1447d77b5325708994c5291dd88 (diff)
downloadscummvm-rg350-e7c98ffda0107af56435f8048d000c1cdc139bf6.tar.gz
scummvm-rg350-e7c98ffda0107af56435f8048d000c1cdc139bf6.tar.bz2
scummvm-rg350-e7c98ffda0107af56435f8048d000c1cdc139bf6.zip
XEEN: Toggle UI buttons when hotkey is pressed
-rw-r--r--engines/xeen/dialogs.cpp36
-rw-r--r--engines/xeen/dialogs_items.cpp5
2 files changed, 35 insertions, 6 deletions
diff --git a/engines/xeen/dialogs.cpp b/engines/xeen/dialogs.cpp
index b890aa73b3..f1c1032d23 100644
--- a/engines/xeen/dialogs.cpp
+++ b/engines/xeen/dialogs.cpp
@@ -63,6 +63,7 @@ void ButtonContainer::addPartyButtons(XeenEngine *vm) {
bool ButtonContainer::checkEvents(XeenEngine *vm) {
EventsManager &events = *vm->_events;
+ Screen &screen = *vm->_screen;
_buttonValue = 0;
if (events._leftButton) {
@@ -74,11 +75,11 @@ bool ButtonContainer::checkEvents(XeenEngine *vm) {
events.debounceMouse();
_buttonValue = _buttons[i]._value;
- return true;
+ break;
}
}
- if (Common::Rect(8, 8, 224, 135).contains(pt)) {
+ if (!_buttonValue && Common::Rect(8, 8, 224, 135).contains(pt)) {
_buttonValue = 1;
return true;
}
@@ -95,8 +96,35 @@ bool ButtonContainer::checkEvents(XeenEngine *vm) {
_buttonValue = Common::KEYCODE_RETURN;
_buttonValue |= (keyState.flags & ~Common::KBD_CAPS) << 16;
- if (_buttonValue)
- return true;
+ }
+
+ if (_buttonValue) {
+ // Check for a button matching the selected _buttonValue
+ Window &win = screen._windows[39];
+ for (uint btnIndex = 0; btnIndex < _buttons.size(); ++btnIndex) {
+ UIButton &btn = _buttons[btnIndex];
+ if (btn._draw && btn._value == _buttonValue) {
+ // Found the correct button
+ // Draw button depressed
+ btn._sprites->draw(screen, btnIndex * 2 + 1,
+ Common::Point(btn._bounds.left, btn._bounds.top));
+ win.setBounds(btn._bounds);
+ win.update();
+
+ // Slight delay
+ screen.update();
+ events.wait(4);
+
+ // Redraw button in it's original non-depressed form
+ btn._sprites->draw(screen, btnIndex * 2,
+ Common::Point(btn._bounds.left, btn._bounds.top));
+ win.setBounds(btn._bounds);
+ win.update();
+ break;
+ }
+ }
+
+ return true;
}
return false;
diff --git a/engines/xeen/dialogs_items.cpp b/engines/xeen/dialogs_items.cpp
index fa130da13a..5f0a2feb31 100644
--- a/engines/xeen/dialogs_items.cpp
+++ b/engines/xeen/dialogs_items.cpp
@@ -466,13 +466,14 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
}
break;
- case Common::KEYCODE_n:
- // Misc category
+ case Common::KEYCODE_m:
+ // Misc
category = CATEGORY_MISC;
redrawFlag = REDRAW_TEXT;
break;
case Common::KEYCODE_q:
+ // Quests
if (mode == ITEMMODE_CHAR_INFO) {
Quests::show(_vm);
redrawFlag = REDRAW_TEXT;