/** * Detects and handles touch events from the user. * * @param MotionEvent event * @return boolean */ @Override public boolean onTouchEvent(MotionEvent event) { int eventAction = event.getAction(); switch (eventAction) { case MotionEvent.ACTION_DOWN: if (mGameState == STATE_RUNNING) { final int x = (int) event.getX(); final int y = (int) event.getY(); if (mCtrlUpArrow.getImpact(x, y)) { Log.d("Tile Game Example", "Pressed up arrow"); mLastStatusMessage = "Moving up"; mPlayerVerticalDirection = DIRECTION_UP; mPlayerMoving = true; } else if (mCtrlDownArrow.getImpact(x, y)) { Log.d("Tile Game Example", "Pressed down arrow"); mLastStatusMessage = "Moving down"; mPlayerVerticalDirection = DIRECTION_DOWN; mPlayerMoving = true; } else if (mCtrlLeftArrow.getImpact(x, y)) { Log.d("Tile Game Example", "Pressed left arrow"); mLastStatusMessage = "Moving left"; mPlayerHorizontalDirection = DIRECTION_LEFT; mPlayerMoving = true; } else if (mCtrlRightArrow.getImpact(x, y)) { Log.d("Tile Game Example", "Pressed right arrow"); mLastStatusMessage = "Moving right"; mPlayerHorizontalDirection = DIRECTION_RIGHT; mPlayerMoving = true; } } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: mPlayerMoving = false; mPlayerVerticalDirection = 0; mPlayerHorizontalDirection = 0; break; } return true; }
/** Initializes and sets the on-screen position of the game controls. */ private void setControlsStart() { if (mCtrlDownArrow == null) { mCtrlDownArrow = new GameUi(mGameContext, R.drawable.ctrl_down_arrow); mCtrlDownArrow.setX( mScreenXMax - ((mCtrlDownArrow.getWidth() * 2) + getPixelValueForDensity(CONTROLS_PADDING))); mCtrlDownArrow.setY( mScreenYMax - (mCtrlDownArrow.getHeight() + getPixelValueForDensity(CONTROLS_PADDING))); } if (mCtrlUpArrow == null) { mCtrlUpArrow = new GameUi(mGameContext, R.drawable.ctrl_up_arrow); mCtrlUpArrow.setX(mCtrlDownArrow.getX()); mCtrlUpArrow.setY(mCtrlDownArrow.getY() - (mCtrlUpArrow.getHeight() * 2)); } if (mCtrlLeftArrow == null) { mCtrlLeftArrow = new GameUi(mGameContext, R.drawable.ctrl_left_arrow); mCtrlLeftArrow.setX(mCtrlDownArrow.getX() - mCtrlLeftArrow.getWidth()); mCtrlLeftArrow.setY(mCtrlDownArrow.getY() - mCtrlLeftArrow.getHeight()); } if (mCtrlRightArrow == null) { mCtrlRightArrow = new GameUi(mGameContext, R.drawable.ctrl_right_arrow); mCtrlRightArrow.setX( mScreenXMax - (mCtrlLeftArrow.getWidth() + getPixelValueForDensity(CONTROLS_PADDING))); mCtrlRightArrow.setY(mCtrlLeftArrow.getY()); } }