diff --git a/src/android/app/src/main/java/org/citra/citra_android/overlay/InputOverlay.java b/src/android/app/src/main/java/org/citra/citra_android/overlay/InputOverlay.java index eeaa5dcf8..891e38859 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/overlay/InputOverlay.java +++ b/src/android/app/src/main/java/org/citra/citra_android/overlay/InputOverlay.java @@ -141,16 +141,16 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener { case ButtonType.BUTTON_HOME: case ButtonType.BUTTON_START: case ButtonType.BUTTON_SELECT: - scale = 0.0625f; + scale = 0.08f; break; case ButtonType.TRIGGER_L: case ButtonType.TRIGGER_R: case ButtonType.BUTTON_ZL: case ButtonType.BUTTON_ZR: - scale = 0.25f; + scale = 0.18f; break; default: - scale = 0.125f; + scale = 0.11f; break; } @@ -218,16 +218,7 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener { final SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(context); // Decide scale based on button ID and user preference - float scale; - - switch (buttonUp) { - case ButtonType.DPAD_UP: - scale = 0.275f; - break; - default: - scale = 0.2125f; - break; - } + float scale = 0.22f; scale *= (sPrefs.getInt("controlScale", 50) + 50); scale /= 100; @@ -299,22 +290,16 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener { int drawableY = (int) sPrefs.getFloat(joystick + orientation + "-Y", 0f); // Decide inner scale based on joystick ID - float innerScale; - - switch (joystick) { - case ButtonType.STICK_C: - innerScale = 1.833f; - break; - default: - innerScale = 1.375f; - break; + float outerScale = 1.f; + if (joystick == ButtonType.STICK_C) { + outerScale = 2.f; } // Now set the bounds for the InputOverlayDrawableJoystick. // This will dictate where on the screen (and the what the size) the InputOverlayDrawableJoystick will be. int outerSize = bitmapOuter.getWidth(); - Rect outerRect = new Rect(drawableX, drawableY, drawableX + outerSize, drawableY + outerSize); - Rect innerRect = new Rect(0, 0, (int) (outerSize / innerScale), (int) (outerSize / innerScale)); + Rect outerRect = new Rect(drawableX, drawableY, drawableX + (int) (outerSize / outerScale), drawableY + (int) (outerSize / outerScale)); + Rect innerRect = new Rect(0, 0, (int) (outerSize / outerScale), (int) (outerSize / outerScale)); // Send the drawableId to the joystick so it can be referenced when saving control position. final InputOverlayDrawableJoystick overlayDrawable @@ -349,7 +334,7 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener { } private void HandleOrientationChange() { - final int layoutOption = mPreferences.getInt("LandscapeScreenLayout",5 /*LayoutOption_MobileLandscape*/); + final int layoutOption = mPreferences.getInt("LandscapeScreenLayout", 5 /*LayoutOption_MobileLandscape*/); final boolean isPortrait = getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT; NativeLibrary.NotifyOrientationChange(layoutOption, isPortrait); } @@ -661,7 +646,7 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener { ButtonType.STICK_LEFT, orientation)); } if (mPreferences.getBoolean("buttonToggle13", false)) { - overlayJoysticks.add(initializeOverlayJoystick(getContext(), R.drawable.stick_main_range, + overlayJoysticks.add(initializeOverlayJoystick(getContext(), R.drawable.stick_c_range, R.drawable.stick_c, R.drawable.stick_c_pressed, ButtonType.STICK_C, orientation)); } } diff --git a/src/android/app/src/main/java/org/citra/citra_android/overlay/InputOverlayDrawableJoystick.java b/src/android/app/src/main/java/org/citra/citra_android/overlay/InputOverlayDrawableJoystick.java index 54040085b..4afddea59 100644 --- a/src/android/app/src/main/java/org/citra/citra_android/overlay/InputOverlayDrawableJoystick.java +++ b/src/android/app/src/main/java/org/citra/citra_android/overlay/InputOverlayDrawableJoystick.java @@ -13,6 +13,8 @@ import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.view.MotionEvent; +import org.citra.citra_android.NativeLibrary.ButtonType; + /** * Custom {@link BitmapDrawable} that is capable * of storing it's own ID. @@ -146,6 +148,13 @@ public final class InputOverlayDrawableJoystick { int pointerIndex = event.getActionIndex(); int fingerPositionX = (int) event.getX(pointerIndex); int fingerPositionY = (int) event.getY(pointerIndex); + + int scale = 1; + if (mJoystickType == ButtonType.STICK_C) { + // C-stick is scaled down to be half the size of the circle pad + scale = 2; + } + switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mPreviousTouchX = fingerPositionX; @@ -157,15 +166,15 @@ public final class InputOverlayDrawableJoystick { mControlPositionX += deltaX; mControlPositionY += deltaY; setBounds(new Rect(mControlPositionX, mControlPositionY, - mOuterBitmap.getIntrinsicWidth() + mControlPositionX, - mOuterBitmap.getIntrinsicHeight() + mControlPositionY)); + mOuterBitmap.getIntrinsicWidth() / scale + mControlPositionX, + mOuterBitmap.getIntrinsicHeight() / scale + mControlPositionY)); setVirtBounds(new Rect(mControlPositionX, mControlPositionY, - mOuterBitmap.getIntrinsicWidth() + mControlPositionX, - mOuterBitmap.getIntrinsicHeight() + mControlPositionY)); + mOuterBitmap.getIntrinsicWidth() / scale + mControlPositionX, + mOuterBitmap.getIntrinsicHeight() / scale + mControlPositionY)); SetInnerBounds(); setOrigBounds(new Rect(new Rect(mControlPositionX, mControlPositionY, - mOuterBitmap.getIntrinsicWidth() + mControlPositionX, - mOuterBitmap.getIntrinsicHeight() + mControlPositionY))); + mOuterBitmap.getIntrinsicWidth() / scale + mControlPositionX, + mOuterBitmap.getIntrinsicHeight() / scale + mControlPositionY))); mPreviousTouchX = fingerPositionX; mPreviousTouchY = fingerPositionY; break; diff --git a/src/android/app/src/main/res/values/integers.xml b/src/android/app/src/main/res/values/integers.xml index 22e11dd92..7fcc79ba3 100644 --- a/src/android/app/src/main/res/values/integers.xml +++ b/src/android/app/src/main/res/values/integers.xml @@ -3,63 +3,63 @@ 1 - 980 - 540 - 920 - 640 - 920 - 440 - 860 - 540 + 930 + 620 + 870 + 720 + 870 + 520 + 810 + 620 15 - 450 + 470 13 - 180 + 0 13 - 0 - 907 - 180 - 907 - 0 - 735 - 650 - 170 - 650 - 517 + 110 + 895 + 0 + 895 + 110 + 740 + 770 + 100 + 670 + 510 850 - 557 + 570 850 - 477 + 450 850 - 835 - 920 - 740 - 980 - 740 - 860 - 645 - 920 + 855 + 870 + 760 + 930 + 760 + 810 + 665 + 870 10 - 580 + 680 10 - 737 - 0 - 0 - 741 - 737 - 750 - 0 - 710 - 590 + 0 + 10 + 70 + 810 + 0 + 810 + 70 + 800 + 710 40 - 870 - 401 + 840 + 360 794 - 471 + 460 794 - 541 + 560 794