Android: add reset touch overlay

This commit is contained in:
zackhow 2018-09-08 18:04:40 -04:00
parent ab46f0cb82
commit f05d85dfe4
6 changed files with 68 additions and 1 deletions

View File

@ -94,7 +94,8 @@ public final class EmulationActivity extends AppCompatActivity
MENU_ACTION_SAVE_SLOT3, MENU_ACTION_SAVE_SLOT4, MENU_ACTION_SAVE_SLOT5, MENU_ACTION_SAVE_SLOT3, MENU_ACTION_SAVE_SLOT4, MENU_ACTION_SAVE_SLOT5,
MENU_ACTION_SAVE_SLOT6, MENU_ACTION_LOAD_SLOT1, MENU_ACTION_LOAD_SLOT2, MENU_ACTION_SAVE_SLOT6, MENU_ACTION_LOAD_SLOT1, MENU_ACTION_LOAD_SLOT2,
MENU_ACTION_LOAD_SLOT3, MENU_ACTION_LOAD_SLOT4, MENU_ACTION_LOAD_SLOT5, MENU_ACTION_LOAD_SLOT3, MENU_ACTION_LOAD_SLOT4, MENU_ACTION_LOAD_SLOT5,
MENU_ACTION_LOAD_SLOT6, MENU_ACTION_EXIT, MENU_ACTION_CHANGE_DISC}) MENU_ACTION_LOAD_SLOT6, MENU_ACTION_EXIT, MENU_ACTION_CHANGE_DISC,
MENU_ACTION_RESET_OVERLAY})
public @interface MenuAction public @interface MenuAction
{ {
} }
@ -125,6 +126,7 @@ public final class EmulationActivity extends AppCompatActivity
public static final int MENU_ACTION_CHANGE_DISC = 23; public static final int MENU_ACTION_CHANGE_DISC = 23;
public static final int MENU_ACTION_JOYSTICK_REL_CENTER = 24; public static final int MENU_ACTION_JOYSTICK_REL_CENTER = 24;
public static final int MENU_ACTION_RUMBLE = 25; public static final int MENU_ACTION_RUMBLE = 25;
public static final int MENU_ACTION_RESET_OVERLAY = 26;
private static SparseIntArray buttonsActionsMap = new SparseIntArray(); private static SparseIntArray buttonsActionsMap = new SparseIntArray();
@ -165,6 +167,8 @@ public final class EmulationActivity extends AppCompatActivity
buttonsActionsMap.append(R.id.menu_emulation_joystick_rel_center, buttonsActionsMap.append(R.id.menu_emulation_joystick_rel_center,
EmulationActivity.MENU_ACTION_JOYSTICK_REL_CENTER); EmulationActivity.MENU_ACTION_JOYSTICK_REL_CENTER);
buttonsActionsMap.append(R.id.menu_emulation_rumble, EmulationActivity.MENU_ACTION_RUMBLE); buttonsActionsMap.append(R.id.menu_emulation_rumble, EmulationActivity.MENU_ACTION_RUMBLE);
buttonsActionsMap
.append(R.id.menu_emulation_reset_overlay, EmulationActivity.MENU_ACTION_RESET_OVERLAY);
} }
public static void launch(FragmentActivity activity, GameFile gameFile, int position, public static void launch(FragmentActivity activity, GameFile gameFile, int position,
@ -525,6 +529,11 @@ public final class EmulationActivity extends AppCompatActivity
editControlsPlacement(); editControlsPlacement();
break; break;
// Reset overlay placement
case MENU_ACTION_RESET_OVERLAY:
resetOverlay();
break;
// Enable/Disable specific buttons or the entire input overlay. // Enable/Disable specific buttons or the entire input overlay.
case MENU_ACTION_TOGGLE_CONTROLS: case MENU_ACTION_TOGGLE_CONTROLS:
toggleControls(); toggleControls();
@ -833,6 +842,21 @@ public final class EmulationActivity extends AppCompatActivity
} }
private void resetOverlay()
{
new AlertDialog.Builder(this)
.setTitle(getString(R.string.emulation_touch_overlay_reset))
.setPositiveButton(R.string.yes, (dialogInterface, i) ->
{
mEmulationFragment.resetInputOverlay();
})
.setNegativeButton(R.string.cancel, (dialogInterface, i) ->
{
})
.create()
.show();
}
@Override @Override
public boolean dispatchGenericMotionEvent(MotionEvent event) public boolean dispatchGenericMotionEvent(MotionEvent event)
{ {

View File

@ -218,6 +218,11 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
mInputOverlay.refreshControls(); mInputOverlay.refreshControls();
} }
public void resetInputOverlay()
{
mInputOverlay.resetButtonPlacement();
}
@Override @Override
public void surfaceCreated(SurfaceHolder holder) public void surfaceCreated(SurfaceHolder holder)
{ {

View File

@ -638,6 +638,36 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener
invalidate(); invalidate();
} }
public void resetButtonPlacement()
{
boolean isLandscape =
getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
// Values for these come from R.array.controllersEntries
if (EmulationActivity.isGameCubeGame() || mPreferences.getInt("wiiController", 3) == 0)
{
if (isLandscape)
gcDefaultOverlay();
else
gcPortraitDefaultOverlay();
}
else if (mPreferences.getInt("wiiController", 3) == 4)
{
if (isLandscape)
wiiClassicDefaultOverlay();
else
wiiClassicPortraitDefaultOverlay();
}
else
{
if (isLandscape)
wiiDefaultOverlay();
else
wiiPortraitDefaultOverlay();
}
refreshControls();
}
private void saveControlPosition(int sharedPrefsId, int x, int y, String orientation) private void saveControlPosition(int sharedPrefsId, int x, int y, String orientation)
{ {
final SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(getContext()); final SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());

View File

@ -102,6 +102,10 @@
android:id="@+id/menu_emulation_rumble" android:id="@+id/menu_emulation_rumble"
android:checkable="true" android:checkable="true"
android:title="@string/emulation_control_rumble"/> android:title="@string/emulation_control_rumble"/>
<item
android:id="@+id/menu_emulation_reset_overlay"
android:title="@string/emulation_touch_overlay_reset"/>
</menu> </menu>
</item> </item>

View File

@ -108,6 +108,9 @@
android:id="@+id/menu_emulation_choose_controller" android:id="@+id/menu_emulation_choose_controller"
android:title="@string/emulation_choose_controller"/> android:title="@string/emulation_choose_controller"/>
<item
android:id="@+id/menu_emulation_reset_overlay"
android:title="@string/emulation_touch_overlay_reset"/>
</menu> </menu>
</item> </item>

View File

@ -275,6 +275,7 @@
<string name="emulation_choose_controller">Choose Controller</string> <string name="emulation_choose_controller">Choose Controller</string>
<string name="emulation_controller_changed">You may have to reload the game after changing extensions.</string> <string name="emulation_controller_changed">You may have to reload the game after changing extensions.</string>
<string name="emulation_touch_button_help">To change the button layout, open the menu -> Configure Controls -> Edit Layout</string> <string name="emulation_touch_button_help">To change the button layout, open the menu -> Configure Controls -> Edit Layout</string>
<string name="emulation_touch_overlay_reset">Reset Overlay</string>
<!-- GC Adapter Menu--> <!-- GC Adapter Menu-->
<string name="gc_adapter_rumble">Enable Vibration</string> <string name="gc_adapter_rumble">Enable Vibration</string>