Android: Add multiple save slots

This commit is contained in:
Connor McLaughlin 2020-10-24 11:36:57 +10:00
parent a1453ee8a5
commit de3696be4c
2 changed files with 38 additions and 17 deletions

View file

@ -43,6 +43,7 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
private boolean mApplySettingsOnSurfaceRestored = false; private boolean mApplySettingsOnSurfaceRestored = false;
private String mGameTitle = null; private String mGameTitle = null;
private EmulationSurfaceView mContentView; private EmulationSurfaceView mContentView;
private int mSaveStateSlot = 0;
private boolean getBooleanSetting(String key, boolean defaultValue) { private boolean getBooleanSetting(String key, boolean defaultValue) {
return mPreferences.getBoolean(key, defaultValue); return mPreferences.getBoolean(key, defaultValue);
@ -269,25 +270,28 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
private void showMenu() { private void showMenu() {
AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog.Builder builder = new AlertDialog.Builder(this);
if (mGameTitle != null && !mGameTitle.isEmpty())
builder.setTitle(mGameTitle);
builder.setItems(R.array.emulation_menu, (dialogInterface, i) -> { builder.setItems(R.array.emulation_menu, (dialogInterface, i) -> {
switch (i) switch (i)
{ {
case 0: // Quick Load case 0: // Quick Load
{ {
AndroidHostInterface.getInstance().loadState(false, 0); AndroidHostInterface.getInstance().loadState(false, mSaveStateSlot);
return; return;
} }
case 1: // Quick Save case 1: // Quick Save
{ {
AndroidHostInterface.getInstance().saveState(false, 0); AndroidHostInterface.getInstance().saveState(false, mSaveStateSlot);
return; return;
} }
case 2: // Toggle Speed Limiter case 2: // Save State Slot
{
showSaveStateSlotMenu();
return;
}
case 3: // Toggle Speed Limiter
{ {
boolean newSetting = !getBooleanSetting("Main/SpeedLimiterEnabled", true); boolean newSetting = !getBooleanSetting("Main/SpeedLimiterEnabled", true);
setBooleanSetting("Main/SpeedLimiterEnabled", newSetting); setBooleanSetting("Main/SpeedLimiterEnabled", newSetting);
@ -295,13 +299,13 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
return; return;
} }
case 3: // More Options case 4: // More Options
{ {
showMoreMenu(); showMoreMenu();
return; return;
} }
case 4: // Quit case 5: // Quit
{ {
mStopRequested = true; mStopRequested = true;
finish(); finish();
@ -313,6 +317,16 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
builder.create().show(); builder.create().show();
} }
private void showSaveStateSlotMenu() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setSingleChoiceItems(R.array.emulation_save_state_slot_menu, mSaveStateSlot, (dialogInterface, i) -> {
mSaveStateSlot = i;
dialogInterface.dismiss();
});
builder.setOnDismissListener(dialogInterface -> enableFullscreenImmersive());
builder.create().show();
}
private void showMoreMenu() { private void showMoreMenu() {
AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog.Builder builder = new AlertDialog.Builder(this);
if (mGameTitle != null && !mGameTitle.isEmpty()) if (mGameTitle != null && !mGameTitle.isEmpty())
@ -351,12 +365,6 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
startActivityForResult(intent, REQUEST_CODE_SETTINGS); startActivityForResult(intent, REQUEST_CODE_SETTINGS);
return; return;
} }
case 5: // Quit
{
finish();
return;
}
} }
}); });
builder.setOnDismissListener(dialogInterface -> enableFullscreenImmersive()); builder.setOnDismissListener(dialogInterface -> enableFullscreenImmersive());

View file

@ -128,8 +128,9 @@
<item>PerGameTitle</item> <item>PerGameTitle</item>
</string-array> </string-array>
<string-array name="emulation_menu"> <string-array name="emulation_menu">
<item>Quick Load</item> <item>Load State</item>
<item>Quick Save</item> <item>Save State</item>
<item>Save State Slot</item>
<item>Toggle Speed Limiter</item> <item>Toggle Speed Limiter</item>
<item>More Options</item> <item>More Options</item>
<item>Quit</item> <item>Quit</item>
@ -140,7 +141,19 @@
<item>Change Disc</item> <item>Change Disc</item>
<item>Change Touchscreen Controller</item> <item>Change Touchscreen Controller</item>
<item>Settings</item> <item>Settings</item>
<item>Quit</item> </string-array>
<string-array name="emulation_save_state_slot_menu">
<item>Quick Slot</item>
<item>Game Slot 1</item>
<item>Game Slot 2</item>
<item>Game Slot 3</item>
<item>Game Slot 4</item>
<item>Game Slot 5</item>
<item>Game Slot 6</item>
<item>Game Slot 7</item>
<item>Game Slot 8</item>
<item>Game Slot 9</item>
<item>Game Slot 10</item>
</string-array> </string-array>
<string-array name="settings_cdrom_read_speedup_entries"> <string-array name="settings_cdrom_read_speedup_entries">
<item>None (Double Speed)</item> <item>None (Double Speed)</item>