aboutsummaryrefslogtreecommitdiff
path: root/engines/mutationofjb
diff options
context:
space:
mode:
authorMiroslav Remák2018-07-08 19:21:58 +0200
committerEugene Sandulenko2018-08-25 23:12:01 +0200
commitd2e354b51f637dc2e9b251256b5a017cb41cfe59 (patch)
tree7c0de5e8d35cab5bbab1c821ade92a870f0cb0e4 /engines/mutationofjb
parent20d6d71ec97c1f7bc4b95ed6c98375b47dff6646 (diff)
downloadscummvm-rg350-d2e354b51f637dc2e9b251256b5a017cb41cfe59.tar.gz
scummvm-rg350-d2e354b51f637dc2e9b251256b5a017cb41cfe59.tar.bz2
scummvm-rg350-d2e354b51f637dc2e9b251256b5a017cb41cfe59.zip
MUTATIONOFJB: Implement scroll buttons.
Diffstat (limited to 'engines/mutationofjb')
-rw-r--r--engines/mutationofjb/gui.cpp4
-rw-r--r--engines/mutationofjb/inventory.cpp14
-rw-r--r--engines/mutationofjb/inventory.h6
3 files changed, 21 insertions, 3 deletions
diff --git a/engines/mutationofjb/gui.cpp b/engines/mutationofjb/gui.cpp
index 3c8cc66aa8..41ef94af25 100644
--- a/engines/mutationofjb/gui.cpp
+++ b/engines/mutationofjb/gui.cpp
@@ -251,6 +251,10 @@ void Gui::onButtonClicked(ButtonWidget *button) {
if (buttonId <= BUTTON_PICKUP) {
const ActionInfo::Action actions[] = {ActionInfo::Walk, ActionInfo::Talk, ActionInfo::Look, ActionInfo::Use, ActionInfo::PickUp};
_game.setCurrentAction(actions[buttonId]);
+ } else if (buttonId == BUTTON_SCROLL_LEFT) {
+ _game.getGameData().getInventory().scrollLeft();
+ } else if (buttonId == BUTTON_SCROLL_RIGHT) {
+ _game.getGameData().getInventory().scrollRight();
}
}
diff --git a/engines/mutationofjb/inventory.cpp b/engines/mutationofjb/inventory.cpp
index 2fa7f2ca95..2d7ba285f2 100644
--- a/engines/mutationofjb/inventory.cpp
+++ b/engines/mutationofjb/inventory.cpp
@@ -81,6 +81,18 @@ void Inventory::renameItem(const Common::String &oldName, const Common::String &
}
}
+void Inventory::scrollLeft() {
+ if (_items.size() > VISIBLE_ITEMS) {
+ rotateItemsRight(1);
+ }
+}
+
+void Inventory::scrollRight() {
+ if (_items.size() > VISIBLE_ITEMS) {
+ rotateItemsLeft(1);
+ }
+}
+
void Inventory::rotateItemsRight(uint n) {
if (_items.size() < 2) {
return;
@@ -121,7 +133,7 @@ void Inventory::reverseItems(uint from, uint to) {
const uint size = to - from + 1;
for (uint i = 0; i < size / 2; ++i) {
- SWAP(_items[i], _items[size - i - 1]);
+ SWAP(_items[from + i], _items[to - i]);
}
}
diff --git a/engines/mutationofjb/inventory.h b/engines/mutationofjb/inventory.h
index c22422def2..79a0d7583d 100644
--- a/engines/mutationofjb/inventory.h
+++ b/engines/mutationofjb/inventory.h
@@ -52,12 +52,14 @@ public:
void removeAllItems();
void renameItem(const Common::String &oldName, const Common::String &newName);
- void rotateItemsRight(uint n);
- void rotateItemsLeft(uint n);
+ void scrollLeft();
+ void scrollRight();
void setObserver(InventoryObserver *observer);
private:
+ void rotateItemsRight(uint n);
+ void rotateItemsLeft(uint n);
void reverseItems(uint from, uint to);
Items _items;