]> git.localhorst.tv Git - l2e.git/blobdiff - src/menu/InventoryMenu.cpp
implemented inventory item swapping
[l2e.git] / src / menu / InventoryMenu.cpp
index 429fefe59da30888f73b0037c6ae493ec8495daf..bdd94cebf5937f1b439e340f9cef7b2b365d6976 100644 (file)
@@ -23,6 +23,7 @@ using common::Item;
 using geometry::Vector;
 using graphics::Font;
 using graphics::Frame;
+using std::swap;
 
 namespace menu {
 
@@ -99,14 +100,38 @@ void InventoryMenu::HandleEvents(const Input &input) {
                                menu.SetSelected();
                                itemMenu.SetActive();
                        }
+               } else if (itemMenu.IsActive()) {
+                       itemMenu.SetDualSelection();
+               } else if (itemMenu.SelectedIndex() == itemMenu.SecondaryIndex()) {
+                       switch (menu.Selected()) {
+                               case CHOICE_USE:
+                                       // TODO: implement item use
+                                       break;
+                               case CHOICE_SORT:
+                                       // invalid state, recover
+                                       menu.SetActive();
+                                       itemMenu.SetInactive();
+                                       break;
+                               case CHOICE_DROP:
+                                       // TODO: implement item drop
+                                       break;
+                       }
+               } else {
+                       parent->Game().state->inventory.SwapEntriesAt(
+                                       itemMenu.SelectedIndex(),
+                                       itemMenu.SecondaryIndex());
+                       itemMenu.SwapSelected();
+                       itemMenu.SetActive();
                }
        }
        if (input.JustPressed(Input::ACTION_B)) {
                if (menu.IsActive()) {
                        Ctrl().PopState();
-               } else {
+               } else if (itemMenu.IsActive()) {
                        menu.SetActive();
                        itemMenu.SetInactive();
+               } else {
+                       itemMenu.SetActive();
                }
        }
 }