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