X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmenu%2FInventoryMenu.cpp;h=bdd94cebf5937f1b439e340f9cef7b2b365d6976;hb=9c03a930498206bfa05de06ed838a74c8dd84a24;hp=429fefe59da30888f73b0037c6ae493ec8495daf;hpb=ea2353f282a48a4474b32a1ab604eaf1aeff4e2b;p=l2e.git diff --git a/src/menu/InventoryMenu.cpp b/src/menu/InventoryMenu.cpp index 429fefe..bdd94ce 100644 --- a/src/menu/InventoryMenu.cpp +++ b/src/menu/InventoryMenu.cpp @@ -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(); } } }