MUTATIONOFJB: Implement scroll buttons.

This commit is contained in:
Miroslav Remák 2018-07-08 19:21:58 +02:00 committed by Eugene Sandulenko
parent 20d6d71ec9
commit d2e354b51f
3 changed files with 21 additions and 3 deletions

View file

@ -251,6 +251,10 @@ void Gui::onButtonClicked(ButtonWidget *button) {
if (buttonId <= BUTTON_PICKUP) { if (buttonId <= BUTTON_PICKUP) {
const ActionInfo::Action actions[] = {ActionInfo::Walk, ActionInfo::Talk, ActionInfo::Look, ActionInfo::Use, ActionInfo::PickUp}; const ActionInfo::Action actions[] = {ActionInfo::Walk, ActionInfo::Talk, ActionInfo::Look, ActionInfo::Use, ActionInfo::PickUp};
_game.setCurrentAction(actions[buttonId]); _game.setCurrentAction(actions[buttonId]);
} else if (buttonId == BUTTON_SCROLL_LEFT) {
_game.getGameData().getInventory().scrollLeft();
} else if (buttonId == BUTTON_SCROLL_RIGHT) {
_game.getGameData().getInventory().scrollRight();
} }
} }

View file

@ -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) { void Inventory::rotateItemsRight(uint n) {
if (_items.size() < 2) { if (_items.size() < 2) {
return; return;
@ -121,7 +133,7 @@ void Inventory::reverseItems(uint from, uint to) {
const uint size = to - from + 1; const uint size = to - from + 1;
for (uint i = 0; i < size / 2; ++i) { for (uint i = 0; i < size / 2; ++i) {
SWAP(_items[i], _items[size - i - 1]); SWAP(_items[from + i], _items[to - i]);
} }
} }

View file

@ -52,12 +52,14 @@ public:
void removeAllItems(); void removeAllItems();
void renameItem(const Common::String &oldName, const Common::String &newName); void renameItem(const Common::String &oldName, const Common::String &newName);
void rotateItemsRight(uint n); void scrollLeft();
void rotateItemsLeft(uint n); void scrollRight();
void setObserver(InventoryObserver *observer); void setObserver(InventoryObserver *observer);
private: private:
void rotateItemsRight(uint n);
void rotateItemsLeft(uint n);
void reverseItems(uint from, uint to); void reverseItems(uint from, uint to);
Items _items; Items _items;