android: frontend: Update controls overlay placement for new icon resources.

This commit is contained in:
bunnei 2019-07-24 12:56:07 -04:00
parent 4c4da0510e
commit 0f2e28ef5c
3 changed files with 70 additions and 76 deletions

View File

@ -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));
}
}

View File

@ -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;

View File

@ -3,63 +3,63 @@
<integer name="game_grid_columns">1</integer>
<!-- Default N3DS landscape layout -->
<integer name="N3DS_BUTTON_A_X">980</integer>
<integer name="N3DS_BUTTON_A_Y">540</integer>
<integer name="N3DS_BUTTON_B_X">920</integer>
<integer name="N3DS_BUTTON_B_Y">640</integer>
<integer name="N3DS_BUTTON_X_X">920</integer>
<integer name="N3DS_BUTTON_X_Y">440</integer>
<integer name="N3DS_BUTTON_Y_X">860</integer>
<integer name="N3DS_BUTTON_Y_Y">540</integer>
<integer name="N3DS_BUTTON_A_X">930</integer>
<integer name="N3DS_BUTTON_A_Y">620</integer>
<integer name="N3DS_BUTTON_B_X">870</integer>
<integer name="N3DS_BUTTON_B_Y">720</integer>
<integer name="N3DS_BUTTON_X_X">870</integer>
<integer name="N3DS_BUTTON_X_Y">520</integer>
<integer name="N3DS_BUTTON_Y_X">810</integer>
<integer name="N3DS_BUTTON_Y_Y">620</integer>
<integer name="N3DS_BUTTON_UP_X">15</integer>
<integer name="N3DS_BUTTON_UP_Y">450</integer>
<integer name="N3DS_BUTTON_UP_Y">470</integer>
<integer name="N3DS_TRIGGER_L_X">13</integer>
<integer name="N3DS_TRIGGER_L_Y">180</integer>
<integer name="N3DS_TRIGGER_L_Y">0</integer>
<integer name="N3DS_BUTTON_ZL_X">13</integer>
<integer name="N3DS_BUTTON_ZL_Y">0</integer>
<integer name="N3DS_TRIGGER_R_X">907</integer>
<integer name="N3DS_TRIGGER_R_Y">180</integer>
<integer name="N3DS_BUTTON_ZR_X">907</integer>
<integer name="N3DS_BUTTON_ZR_Y">0</integer>
<integer name="N3DS_STICK_C_X">735</integer>
<integer name="N3DS_STICK_C_Y">650</integer>
<integer name="N3DS_STICK_MAIN_X">170</integer>
<integer name="N3DS_STICK_MAIN_Y">650</integer>
<integer name="N3DS_BUTTON_START_X">517</integer>
<integer name="N3DS_BUTTON_ZL_Y">110</integer>
<integer name="N3DS_TRIGGER_R_X">895</integer>
<integer name="N3DS_TRIGGER_R_Y">0</integer>
<integer name="N3DS_BUTTON_ZR_X">895</integer>
<integer name="N3DS_BUTTON_ZR_Y">110</integer>
<integer name="N3DS_STICK_C_X">740</integer>
<integer name="N3DS_STICK_C_Y">770</integer>
<integer name="N3DS_STICK_MAIN_X">100</integer>
<integer name="N3DS_STICK_MAIN_Y">670</integer>
<integer name="N3DS_BUTTON_START_X">510</integer>
<integer name="N3DS_BUTTON_START_Y">850</integer>
<integer name="N3DS_BUTTON_SELECT_X">557</integer>
<integer name="N3DS_BUTTON_SELECT_X">570</integer>
<integer name="N3DS_BUTTON_SELECT_Y">850</integer>
<integer name="N3DS_BUTTON_HOME_X">477</integer>
<integer name="N3DS_BUTTON_HOME_X">450</integer>
<integer name="N3DS_BUTTON_HOME_Y">850</integer>
<!-- Default N3DS portrait layout -->
<integer name="N3DS_BUTTON_A_PORTRAIT_X">835</integer>
<integer name="N3DS_BUTTON_A_PORTRAIT_Y">920</integer>
<integer name="N3DS_BUTTON_B_PORTRAIT_X">740</integer>
<integer name="N3DS_BUTTON_B_PORTRAIT_Y">980</integer>
<integer name="N3DS_BUTTON_X_PORTRAIT_X">740</integer>
<integer name="N3DS_BUTTON_X_PORTRAIT_Y">860</integer>
<integer name="N3DS_BUTTON_Y_PORTRAIT_X">645</integer>
<integer name="N3DS_BUTTON_Y_PORTRAIT_Y">920</integer>
<integer name="N3DS_BUTTON_A_PORTRAIT_X">855</integer>
<integer name="N3DS_BUTTON_A_PORTRAIT_Y">870</integer>
<integer name="N3DS_BUTTON_B_PORTRAIT_X">760</integer>
<integer name="N3DS_BUTTON_B_PORTRAIT_Y">930</integer>
<integer name="N3DS_BUTTON_X_PORTRAIT_X">760</integer>
<integer name="N3DS_BUTTON_X_PORTRAIT_Y">810</integer>
<integer name="N3DS_BUTTON_Y_PORTRAIT_X">665</integer>
<integer name="N3DS_BUTTON_Y_PORTRAIT_Y">870</integer>
<integer name="N3DS_BUTTON_UP_PORTRAIT_X">10</integer>
<integer name="N3DS_BUTTON_UP_PORTRAIT_Y">580</integer>
<integer name="N3DS_BUTTON_UP_PORTRAIT_Y">680</integer>
<integer name="N3DS_TRIGGER_L_PORTRAIT_X">10</integer>
<integer name="N3DS_TRIGGER_L_PORTRAIT_Y">737</integer>
<integer name="N3DS_BUTTON_ZL_PORTRAIT_X">0</integer>
<integer name="N3DS_BUTTON_ZL_PORTRAIT_Y">0</integer>
<integer name="N3DS_TRIGGER_R_PORTRAIT_X">741</integer>
<integer name="N3DS_TRIGGER_R_PORTRAIT_Y">737</integer>
<integer name="N3DS_BUTTON_ZR_PORTRAIT_X">750</integer>
<integer name="N3DS_BUTTON_ZR_PORTRAIT_Y">0</integer>
<integer name="N3DS_STICK_C_PORTRAIT_X">710</integer>
<integer name="N3DS_STICK_C_PORTRAIT_Y">590</integer>
<integer name="N3DS_TRIGGER_L_PORTRAIT_Y">0</integer>
<integer name="N3DS_BUTTON_ZL_PORTRAIT_X">10</integer>
<integer name="N3DS_BUTTON_ZL_PORTRAIT_Y">70</integer>
<integer name="N3DS_TRIGGER_R_PORTRAIT_X">810</integer>
<integer name="N3DS_TRIGGER_R_PORTRAIT_Y">0</integer>
<integer name="N3DS_BUTTON_ZR_PORTRAIT_X">810</integer>
<integer name="N3DS_BUTTON_ZR_PORTRAIT_Y">70</integer>
<integer name="N3DS_STICK_C_PORTRAIT_X">800</integer>
<integer name="N3DS_STICK_C_PORTRAIT_Y">710</integer>
<integer name="N3DS_STICK_MAIN_PORTRAIT_X">40</integer>
<integer name="N3DS_STICK_MAIN_PORTRAIT_Y">870</integer>
<integer name="N3DS_BUTTON_HOME_PORTRAIT_X">401</integer>
<integer name="N3DS_STICK_MAIN_PORTRAIT_Y">840</integer>
<integer name="N3DS_BUTTON_HOME_PORTRAIT_X">360</integer>
<integer name="N3DS_BUTTON_HOME_PORTRAIT_Y">794</integer>
<integer name="N3DS_BUTTON_START_PORTRAIT_X">471</integer>
<integer name="N3DS_BUTTON_START_PORTRAIT_X">460</integer>
<integer name="N3DS_BUTTON_START_PORTRAIT_Y">794</integer>
<integer name="N3DS_BUTTON_SELECT_PORTRAIT_X">541</integer>
<integer name="N3DS_BUTTON_SELECT_PORTRAIT_X">560</integer>
<integer name="N3DS_BUTTON_SELECT_PORTRAIT_Y">794</integer>
</resources>