void InventoryMenu::OnEnterState(SDL_Surface *) {
+ menu.SetSelected();
const Inventory &inv(parent->Game().state->inventory);
itemMenu.Clear();
itemMenu.Reserve(inv.MaxItems());
void InventoryMenu::HandleEvents(const Input &input) {
- if (input.JustPressed(Input::PAD_LEFT)) {
- menu.PreviousItem();
- }
- if (input.JustPressed(Input::PAD_RIGHT)) {
- menu.NextItem();
+ if (menu.IsActive()) {
+ if (input.JustPressed(Input::PAD_LEFT)) {
+ menu.PreviousItem();
+ }
+ if (input.JustPressed(Input::PAD_RIGHT)) {
+ menu.NextItem();
+ }
+ } else {
+ if (input.JustPressed(Input::PAD_UP)) {
+ itemMenu.PreviousItem();
+ }
+ if (input.JustPressed(Input::PAD_DOWN)) {
+ itemMenu.NextItem();
+ }
}
- if (input.JustPressed(Input::PAD_UP)) {
- itemMenu.PreviousItem();
+ if (input.JustPressed(Input::ACTION_A)) {
+ if (menu.IsActive()) {
+ menu.SetSelected();
+ itemMenu.SetActive();
+ }
}
- if (input.JustPressed(Input::PAD_DOWN)) {
- itemMenu.NextItem();
+ if (input.JustPressed(Input::ACTION_B)) {
+ if (menu.IsActive()) {
+ Ctrl().PopState();
+ } else {
+ menu.SetActive();
+ itemMenu.SetInactive();
+ }
}
}