diff options
-rw-r--r-- | engines/mutationofjb/gui.cpp | 4 | ||||
-rw-r--r-- | engines/mutationofjb/inventory.cpp | 14 | ||||
-rw-r--r-- | engines/mutationofjb/inventory.h | 6 |
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; |