diff --git a/src/com/annimon/everlastingsummer/ViewActivity.java b/src/com/annimon/everlastingsummer/ViewActivity.java index 579fce2..47dbfdf 100644 --- a/src/com/annimon/everlastingsummer/ViewActivity.java +++ b/src/com/annimon/everlastingsummer/ViewActivity.java @@ -39,6 +39,13 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch public static final String EXTRA_SAVE = "save"; private static final String STATE_SAVEINFO = "saveinfo"; + private static final int + ITEM_PREV_SCENE = 0, + ITEM_NEXT_SCENE = 1, + ITEM_NAVIGATE = 2, + ITEM_SAVE = 3, + ITEM_LOAD = 4; + private static final FadeInfo NO_FADE = new FadeInfo(false, false, 0); private static ViewActivity instance; @@ -189,28 +196,64 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch } public boolean onKeyUp(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_MENU) { - Dialogs.with(this).showMenu(R.array.menu_items, menu); - return true; + if (event.getRepeatCount() != 0) { + return super.onKeyUp(keyCode, event); + } + switch (keyCode) { + case KeyEvent.KEYCODE_SPACE: + case KeyEvent.KEYCODE_BUTTON_A: + // Далее + onTouchGesture(TouchGestureType.SINGLE_TAP); + return true; + case KeyEvent.KEYCODE_MENU: + case KeyEvent.KEYCODE_ENTER: + case KeyEvent.KEYCODE_BUTTON_START: + // Меню + onTouchGesture(TouchGestureType.SWIPE); + return true; + + case KeyEvent.KEYCODE_Q: + case KeyEvent.KEYCODE_BUTTON_SELECT: + // Меню выхода + onBackPressed(); + return true; + + case KeyEvent.KEYCODE_BUTTON_R1: + case KeyEvent.KEYCODE_S: + onMenuItemSelected(ITEM_SAVE); + return true; + + case KeyEvent.KEYCODE_BUTTON_L1: + case KeyEvent.KEYCODE_L: + onMenuItemSelected(ITEM_LOAD); + return true; + + case KeyEvent.KEYCODE_BUTTON_B: + onMenuItemSelected(ITEM_NAVIGATE); + return true; + + case KeyEvent.KEYCODE_BUTTON_X: + onMenuItemSelected(ITEM_PREV_SCENE); + return true; } return super.onKeyUp(keyCode, event); } private void onMenuItemSelected(int item) { switch (item) { - case 0: + case ITEM_PREV_SCENE: Parser.getInstance().prevScene(); break; - case 1: + case ITEM_NEXT_SCENE: Parser.getInstance().nextScene(); break; - case 2: + case ITEM_NAVIGATE: Dialogs.with(getInstance()).showNavigate(); break; - case 3: + case ITEM_SAVE: saveState(); break; - case 4: + case ITEM_LOAD: showLoadStateDialog(); break; }