diff options
| author | Sean <seanmaas27@gmail.com> | 2014-07-08 10:56:22 -0400 |
|---|---|---|
| committer | Sean <seanmaas27@gmail.com> | 2014-07-15 16:14:27 -0400 |
| commit | cd9a0b6f4d42710b2a2f7bdf1eb867de2b2517ae (patch) | |
| tree | 7ae1fa6d0464d391b4374b3eaf2479416e91d1f7 /Source/Android | |
| parent | 59c938d3a7e21a17d778f346fc9a5ad39159ce6e (diff) | |
[Android] Onscreen controls better resemble GC and user configurable scaling
Diffstat (limited to 'Source/Android')
5 files changed, 87 insertions, 15 deletions
diff --git a/Source/Android/res/values-ja/strings.xml b/Source/Android/res/values-ja/strings.xml index d798a35652..857e3cf096 100644 --- a/Source/Android/res/values-ja/strings.xml +++ b/Source/Android/res/values-ja/strings.xml @@ -66,8 +66,11 @@ <!-- Input Config Fragment --> <string name="input_settings">入力</string> + <string name="input_overlay">入力オーバーレイ</string> + <string name="input_overlay_desc">画面上の入力のオーバーレイを設定し。</string> <string name="input_overlay_layout">入力オーバーレイレイアウト</string> <string name="input_overlay_layout_desc">入力オーバーレイのためのボタンのレイアウト。</string> + <string name="controls_size">コントロールのサイズを調整し</string> <string name="gamecube_bindings">ゲームキューブコントローラの入力バインディング</string> <string name="controller_0">コントローラ1</string> <string name="controller_1">コントローラ2</string> diff --git a/Source/Android/res/values/strings.xml b/Source/Android/res/values/strings.xml index 06de05ae27..4a2975191f 100644 --- a/Source/Android/res/values/strings.xml +++ b/Source/Android/res/values/strings.xml @@ -66,8 +66,11 @@ <!-- Input Config Fragment --> <string name="input_settings">Input</string> + <string name="input_overlay">Input Overlay</string> + <string name="input_overlay_desc">Configure the onscreen input overlay.</string> <string name="input_overlay_layout">Input Overlay Layout</string> <string name="input_overlay_layout_desc">Button layout for the input overlay.</string> + <string name="controls_size">Adjust the control size</string> <string name="gamecube_bindings">GameCube Controller Bindings</string> <string name="controller_0">Controller 1</string> <string name="controller_1">Controller 2</string> diff --git a/Source/Android/res/xml/input_prefs.xml b/Source/Android/res/xml/input_prefs.xml index 6e422f49c1..f6d8842f89 100644 --- a/Source/Android/res/xml/input_prefs.xml +++ b/Source/Android/res/xml/input_prefs.xml @@ -1,15 +1,25 @@ <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/input_settings"> - - <Preference - android:key="inputOverlayConfigPref" - android:summary="@string/input_overlay_layout_desc" - android:title="@string/input_overlay_layout"> - <intent - android:targetPackage="org.dolphinemu.dolphinemu" - android:targetClass="org.dolphinemu.dolphinemu.settings.input.overlayconfig.OverlayConfigActivity"/> - </Preference> + <PreferenceScreen + android:key="input_overlay" + android:title="@string/input_overlay" + android:summary="@string/input_overlay_desc"> + <Preference + android:key="inputOverlayConfigPref" + android:summary="@string/input_overlay_layout_desc" + android:title="@string/input_overlay_layout"> + <intent + android:targetPackage="org.dolphinemu.dolphinemu" + android:targetClass="org.dolphinemu.dolphinemu.settings.input.overlayconfig.OverlayConfigActivity"/> + </Preference> + <SeekBarPreference + android:key="controls_size" + android:title="@string/controls_size" + android:defaultValue="25" + android:max="75"> + </SeekBarPreference> + </PreferenceScreen> <!-- GameCube controller bindings --> <PreferenceScreen diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/emulation/overlay/InputOverlay.java b/Source/Android/src/org/dolphinemu/dolphinemu/emulation/overlay/InputOverlay.java index 054690a072..2f2fdb9a53 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/emulation/overlay/InputOverlay.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/emulation/overlay/InputOverlay.java @@ -186,8 +186,31 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener // SharedPreference to retrieve the X and Y coordinates for the InputOverlayDrawableButton. final SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(context); + // Decide scale based on button ID + float scale; + float overlaySize = sPrefs.getInt("controls_size", 25); + overlaySize += 25; + overlaySize /= 50; + + switch (resId) + { + case R.drawable.gcpad_b: + scale = 0.13f * overlaySize; + break; + case R.drawable.gcpad_x: + case R.drawable.gcpad_y: + scale = 0.18f * overlaySize; + break; + case R.drawable.gcpad_start: + scale = 0.12f * overlaySize; + break; + default: + scale = 0.20f * overlaySize; + break; + } + // Initialize the InputOverlayDrawableButton. - final Bitmap bitmap = resizeBitmap(context, BitmapFactory.decodeResource(res, resId), 0.20f); + final Bitmap bitmap = resizeBitmap(context, BitmapFactory.decodeResource(res, resId), scale); final InputOverlayDrawableButton overlayDrawable = new InputOverlayDrawableButton(res, bitmap, buttonId); // String ID of the Drawable. This is what is passed into SharedPreferences @@ -231,7 +254,10 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener final SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(context); // Initialize the InputOverlayDrawableJoystick. - final Bitmap bitmapOuter = resizeBitmap(context, BitmapFactory.decodeResource(res, resOuter), 0.30f); + float overlaySize = sPrefs.getInt("controls_size", 20); + overlaySize += 30; + overlaySize /= 50; + final Bitmap bitmapOuter = resizeBitmap(context, BitmapFactory.decodeResource(res, resOuter), 0.30f * overlaySize); final Bitmap bitmapInner = BitmapFactory.decodeResource(res, resInner); // String ID of the Drawable. This is what is passed into SharedPreferences diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/settings/input/overlayconfig/OverlayConfigButton.java b/Source/Android/src/org/dolphinemu/dolphinemu/settings/input/overlayconfig/OverlayConfigButton.java index 30288179ef..65a1ae4df6 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/settings/input/overlayconfig/OverlayConfigButton.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/settings/input/overlayconfig/OverlayConfigButton.java @@ -76,13 +76,43 @@ public final class OverlayConfigButton extends Button implements OnTouchListener // Set the button as its own OnTouchListener. setOnTouchListener(this); - // Set the button's icon that represents it. - setBackground(resizeDrawable(getResources().getDrawable(drawableId), - drawableId == R.drawable.gcpad_joystick_range ? 0.30f : 0.20f)); - // Get the SharedPreferences instance. sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + // Decide scale based on button ID + + // SeekBars are not able to set a minimum value, only a maximum value, which complicates + // things a bit. What happens here is after the SeekBar's value is retrieved, 25 is + // added so the value will never go below 25. It is then divided by 50 (25 + 25) so the + // default value will be 100%. + float scale; + float overlaySize = sharedPrefs.getInt("controls_size", 25); + overlaySize += 25; + overlaySize /= 50; + + switch (drawableId) + { + case R.drawable.gcpad_b: + scale = 0.13f * overlaySize; + break; + case R.drawable.gcpad_x: + case R.drawable.gcpad_y: + scale = 0.18f * overlaySize; + break; + case R.drawable.gcpad_start: + scale = 0.12f * overlaySize; + break; + case R.drawable.gcpad_joystick_range: + scale = 0.30f * overlaySize; + break; + default: + scale = 0.20f * overlaySize; + break; + } + + // Set the button's icon that represents it. + setBackground(resizeDrawable(getResources().getDrawable(drawableId), scale)); + // Check if this button has previous values set that aren't the default. final float x = sharedPrefs.getFloat(buttonId+"-X", -1f); final float y = sharedPrefs.getFloat(buttonId+"-Y", -1f); |
