+ if (actionMenu.IsActive()) {
+ if (input.JustPressed(Input::PAD_UP)) {
+ actionMenu.PreviousRow();
+ }
+ if (input.JustPressed(Input::PAD_DOWN)) {
+ actionMenu.NextRow();
+ }
+ if (input.JustPressed(Input::ACTION_A)) {
+ switch (actionMenu.Selected()) {
+ case CHOICE_EQUIP:
+ LoadEquipment();
+ actionMenu.SetSelected();
+ equipmentMenu.SetActive();
+ break;
+ case CHOICE_STRONGEST:
+ // TODO
+ break;
+ case CHOICE_REMOVE:
+ actionMenu.SetSelected();
+ equipmentMenu.SetActive();
+ break;
+ case CHOICE_REMOVE_ALL:
+ RemoveAllEquipment();
+ break;
+ case CHOICE_DROP:
+ actionMenu.SetSelected();
+ equipmentMenu.SetActive();
+ break;
+ }
+ } else if (input.JustPressed(Input::ACTION_B)) {
+ Ctrl().PopState();
+ }
+ } else if (equipmentMenu.IsActive()) {
+ if (input.JustPressed(Input::PAD_UP)) {
+ equipmentMenu.PreviousRow();
+ if (InventoryVisible()) {
+ LoadInventory();
+ }
+ }
+ if (input.JustPressed(Input::PAD_DOWN)) {
+ equipmentMenu.NextRow();
+ if (InventoryVisible()) {
+ LoadInventory();
+ }
+ }
+ if (input.JustPressed(Input::ACTION_B)) {
+ equipmentMenu.SetInactive();
+ actionMenu.SetActive();
+ } else if (input.JustPressed(Input::ACTION_A)) {
+ switch (actionMenu.Selected()) {
+ case CHOICE_EQUIP:
+ equipmentMenu.SetSelected();
+ inventoryMenu.SetActive();
+ break;
+ case CHOICE_STRONGEST:
+ case CHOICE_REMOVE_ALL:
+ // invalid state, recover
+ equipmentMenu.SetInactive();
+ actionMenu.SetActive();
+ break;
+ case CHOICE_REMOVE:
+ RemoveItem();
+ break;
+ case CHOICE_DROP:
+ DropItem();
+ break;
+ }
+ }
+ } else {
+ if (input.JustPressed(Input::PAD_UP)) {
+ inventoryMenu.PreviousRow();
+ }
+ if (input.JustPressed(Input::PAD_DOWN)) {
+ inventoryMenu.NextRow();
+ }
+ if (input.JustPressed(Input::ACTION_A)) {
+ // TODO: equip selected item
+ } else if (input.JustPressed(Input::ACTION_B)) {
+ inventoryMenu.SetInactive();
+ equipmentMenu.SetActive();
+ }
+ }