diff options
Diffstat (limited to 'src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.java')
-rw-r--r-- | src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.java | 276 |
1 files changed, 0 insertions, 276 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.java deleted file mode 100644 index 1d10b1e65..000000000 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.java +++ /dev/null @@ -1,276 +0,0 @@ -/** - * Copyright 2016 Dolphin Emulator Project - * Licensed under GPLv2+ - * Refer to the license.txt file included. - */ - -package org.yuzu.yuzu_emu.overlay; - -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Rect; -import android.graphics.drawable.BitmapDrawable; -import android.view.MotionEvent; - -import org.yuzu.yuzu_emu.NativeLibrary.ButtonState; - -/** - * Custom {@link BitmapDrawable} that is capable - * of storing it's own ID. - */ -public final class InputOverlayDrawableDpad { - public static final float VIRT_AXIS_DEADZONE = 0.5f; - // The ID identifying what type of button this Drawable represents. - private int mUpButtonId; - private int mDownButtonId; - private int mLeftButtonId; - private int mRightButtonId; - private int mTrackId; - private int mControlPositionX, mControlPositionY; - private int mWidth; - private int mHeight; - private BitmapDrawable mDefaultStateBitmap; - private BitmapDrawable mPressedOneDirectionStateBitmap; - private BitmapDrawable mPressedTwoDirectionsStateBitmap; - private boolean mUpButtonState; - private boolean mDownButtonState; - private boolean mLeftButtonState; - private boolean mRightButtonState; - - /** - * Constructor - * - * @param res {@link Resources} instance. - * @param defaultStateBitmap {@link Bitmap} of the default state. - * @param pressedOneDirectionStateBitmap {@link Bitmap} of the pressed state in one direction. - * @param pressedTwoDirectionsStateBitmap {@link Bitmap} of the pressed state in two direction. - * @param buttonUp Identifier for the up button. - * @param buttonDown Identifier for the down button. - * @param buttonLeft Identifier for the left button. - * @param buttonRight Identifier for the right button. - */ - public InputOverlayDrawableDpad(Resources res, - Bitmap defaultStateBitmap, - Bitmap pressedOneDirectionStateBitmap, - Bitmap pressedTwoDirectionsStateBitmap, - int buttonUp, int buttonDown, - int buttonLeft, int buttonRight) { - mDefaultStateBitmap = new BitmapDrawable(res, defaultStateBitmap); - mPressedOneDirectionStateBitmap = new BitmapDrawable(res, pressedOneDirectionStateBitmap); - mPressedTwoDirectionsStateBitmap = new BitmapDrawable(res, pressedTwoDirectionsStateBitmap); - - mWidth = mDefaultStateBitmap.getIntrinsicWidth(); - mHeight = mDefaultStateBitmap.getIntrinsicHeight(); - - mUpButtonId = buttonUp; - mDownButtonId = buttonDown; - mLeftButtonId = buttonLeft; - mRightButtonId = buttonRight; - - mTrackId = -1; - } - - public boolean updateStatus(MotionEvent event, boolean dpad_slide) { - int pointerIndex = event.getActionIndex(); - int xPosition = (int) event.getX(pointerIndex); - int yPosition = (int) event.getY(pointerIndex); - int pointerId = event.getPointerId(pointerIndex); - int motion_event = event.getAction() & MotionEvent.ACTION_MASK; - boolean isActionDown = motion_event == MotionEvent.ACTION_DOWN || motion_event == MotionEvent.ACTION_POINTER_DOWN; - boolean isActionUp = motion_event == MotionEvent.ACTION_UP || motion_event == MotionEvent.ACTION_POINTER_UP; - - if (isActionDown) { - if (!getBounds().contains(xPosition, yPosition)) { - return false; - } - mTrackId = pointerId; - } - - if (isActionUp) { - if (mTrackId != pointerId) { - return false; - } - mTrackId = -1; - mUpButtonState = false; - mDownButtonState = false; - mLeftButtonState = false; - mRightButtonState = false; - return true; - } - - if (mTrackId == -1) { - return false; - } - - if (!dpad_slide && !isActionDown) { - return false; - } - - for (int i = 0; i < event.getPointerCount(); i++) { - if (mTrackId != event.getPointerId(i)) { - continue; - } - float touchX = event.getX(i); - float touchY = event.getY(i); - float maxY = getBounds().bottom; - float maxX = getBounds().right; - touchX -= getBounds().centerX(); - maxX -= getBounds().centerX(); - touchY -= getBounds().centerY(); - maxY -= getBounds().centerY(); - final float AxisX = touchX / maxX; - final float AxisY = touchY / maxY; - final boolean up_state = mUpButtonState; - final boolean down_state = mDownButtonState; - final boolean left_state = mLeftButtonState; - final boolean right_state = mRightButtonState; - - mUpButtonState = AxisY < -InputOverlayDrawableDpad.VIRT_AXIS_DEADZONE; - mDownButtonState = AxisY > InputOverlayDrawableDpad.VIRT_AXIS_DEADZONE; - mLeftButtonState = AxisX < -InputOverlayDrawableDpad.VIRT_AXIS_DEADZONE; - mRightButtonState = AxisX > InputOverlayDrawableDpad.VIRT_AXIS_DEADZONE; - return up_state != mUpButtonState || down_state != mDownButtonState || left_state != mLeftButtonState || right_state != mRightButtonState; - } - - return false; - } - - public void draw(Canvas canvas) { - int px = mControlPositionX + (getWidth() / 2); - int py = mControlPositionY + (getHeight() / 2); - - // Pressed up - if (mUpButtonState && !mLeftButtonState && !mRightButtonState) { - mPressedOneDirectionStateBitmap.draw(canvas); - return; - } - - // Pressed down - if (mDownButtonState && !mLeftButtonState && !mRightButtonState) { - canvas.save(); - canvas.rotate(180, px, py); - mPressedOneDirectionStateBitmap.draw(canvas); - canvas.restore(); - return; - } - - // Pressed left - if (mLeftButtonState && !mUpButtonState && !mDownButtonState) { - canvas.save(); - canvas.rotate(270, px, py); - mPressedOneDirectionStateBitmap.draw(canvas); - canvas.restore(); - return; - } - - // Pressed right - if (mRightButtonState && !mUpButtonState && !mDownButtonState) { - canvas.save(); - canvas.rotate(90, px, py); - mPressedOneDirectionStateBitmap.draw(canvas); - canvas.restore(); - return; - } - - // Pressed up left - if (mUpButtonState && mLeftButtonState && !mRightButtonState) { - mPressedTwoDirectionsStateBitmap.draw(canvas); - return; - } - - // Pressed up right - if (mUpButtonState && !mLeftButtonState && mRightButtonState) { - canvas.save(); - canvas.rotate(90, px, py); - mPressedTwoDirectionsStateBitmap.draw(canvas); - canvas.restore(); - return; - } - - // Pressed down left - if (mDownButtonState && mLeftButtonState && !mRightButtonState) { - canvas.save(); - canvas.rotate(270, px, py); - mPressedTwoDirectionsStateBitmap.draw(canvas); - canvas.restore(); - return; - } - - // Pressed down right - if (mDownButtonState && !mLeftButtonState && mRightButtonState) { - canvas.save(); - canvas.rotate(180, px, py); - mPressedTwoDirectionsStateBitmap.draw(canvas); - canvas.restore(); - return; - } - - // Not pressed - mDefaultStateBitmap.draw(canvas); - } - - /** - * Gets one of the InputOverlayDrawableDpad's button IDs. - * - * @return the requested InputOverlayDrawableDpad's button ID. - */ - public int getUpId() { - return mUpButtonId; - } - - public int getDownId() { - return mDownButtonId; - } - - public int getLeftId() { - return mLeftButtonId; - } - - public int getRightId() { - return mRightButtonId; - } - - public int getTrackId() { - return mTrackId; - } - - public int getUpStatus() { - return mUpButtonState ? ButtonState.PRESSED : ButtonState.RELEASED; - } - - public int getDownStatus() { - return mDownButtonState ? ButtonState.PRESSED : ButtonState.RELEASED; - } - - public int getLeftStatus() { - return mLeftButtonState ? ButtonState.PRESSED : ButtonState.RELEASED; - } - - public int getRightStatus() { - return mRightButtonState ? ButtonState.PRESSED : ButtonState.RELEASED; - } - - public void setPosition(int x, int y) { - mControlPositionX = x; - mControlPositionY = y; - } - - public void setBounds(int left, int top, int right, int bottom) { - mDefaultStateBitmap.setBounds(left, top, right, bottom); - mPressedOneDirectionStateBitmap.setBounds(left, top, right, bottom); - mPressedTwoDirectionsStateBitmap.setBounds(left, top, right, bottom); - } - - public Rect getBounds() { - return mDefaultStateBitmap.getBounds(); - } - - public int getWidth() { - return mWidth; - } - - public int getHeight() { - return mHeight; - } -} |