android: frontend: menu: Improve in game options, make check boxes.
This commit is contained in:
parent
3293b51e7d
commit
66186b0c39
@ -15,6 +15,7 @@ import android.widget.EditText;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import org.citra.citra_android.activities.EmulationActivity;
|
||||
import org.citra.citra_android.utils.EmulationMenuSettings;
|
||||
import org.citra.citra_android.utils.Log;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
@ -287,7 +288,7 @@ public final class NativeLibrary {
|
||||
/**
|
||||
* Swaps the top and bottom screens.
|
||||
*/
|
||||
public static native void SwapScreens(boolean is_portrait_mode);
|
||||
public static native void SwapScreens(boolean swap_screens, boolean is_portrait_mode);
|
||||
|
||||
public static boolean isPortraitMode() {
|
||||
return CitraApplication.getAppContext().getResources().getConfiguration().orientation ==
|
||||
@ -295,8 +296,7 @@ public final class NativeLibrary {
|
||||
}
|
||||
|
||||
public static int landscapeScreenLayout() {
|
||||
return PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext())
|
||||
.getInt("LandscapeScreenLayout", EmulationActivity.LayoutOption_MobileLandscape);
|
||||
return EmulationMenuSettings.getLandscapeScreenLayout();
|
||||
}
|
||||
|
||||
public static boolean displayAlertMsg(final String caption, final String text,
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.citra.citra_android.activities;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
@ -38,18 +39,14 @@ import org.citra.citra_android.model.settings.view.InputBindingSetting;
|
||||
import org.citra.citra_android.ui.main.MainPresenter;
|
||||
import org.citra.citra_android.utils.Animations;
|
||||
import org.citra.citra_android.utils.ControllerMappingHelper;
|
||||
import org.citra.citra_android.utils.EmulationMenuSettings;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.util.List;
|
||||
|
||||
import static android.view.MotionEvent.AXIS_RZ;
|
||||
import static android.view.MotionEvent.AXIS_X;
|
||||
import static android.view.MotionEvent.AXIS_Y;
|
||||
import static android.view.MotionEvent.AXIS_Z;
|
||||
import static java.lang.annotation.RetentionPolicy.SOURCE;
|
||||
|
||||
public final class EmulationActivity extends AppCompatActivity {
|
||||
public static final int REQUEST_CHANGE_DISC = 1;
|
||||
public static final String EXTRA_SELECTED_GAME = "SelectedGame";
|
||||
public static final String EXTRA_SELECTED_TITLE = "SelectedTitle";
|
||||
public static final String EXTRA_SCREEN_PATH = "ScreenPath";
|
||||
@ -58,13 +55,14 @@ public final class EmulationActivity extends AppCompatActivity {
|
||||
public static final int MENU_ACTION_TOGGLE_CONTROLS = 1;
|
||||
public static final int MENU_ACTION_ADJUST_SCALE = 2;
|
||||
public static final int MENU_ACTION_EXIT = 3;
|
||||
public static final int MENU_ACTION_TOGGLE_PREF_STATS = 4;
|
||||
public static final int MENU_ACTION_SHOW_FPS = 4;
|
||||
public static final int MENU_ACTION_SCREEN_LAYOUT_LANDSCAPE = 5;
|
||||
public static final int MENU_ACTION_SCREEN_LAYOUT_PORTRAIT = 6;
|
||||
public static final int MENU_ACTION_SCREEN_LAYOUT_SINGLE = 7;
|
||||
public static final int MENU_ACTION_SCREEN_LAYOUT_SIDEBYSIDE = 8;
|
||||
public static final int MENU_ACTION_SWAP_SCREENS = 9;
|
||||
public static final int MENU_ACTION_RESET_OVERLAY = 10;
|
||||
public static final int MENU_ACTION_SHOW_OVERLAY = 11;
|
||||
|
||||
private static final int EMULATION_RUNNING_NOTIFICATION = 0x1000;
|
||||
private static final String BACKSTACK_NAME_MENU = "menu";
|
||||
@ -78,8 +76,8 @@ public final class EmulationActivity extends AppCompatActivity {
|
||||
EmulationActivity.MENU_ACTION_TOGGLE_CONTROLS);
|
||||
buttonsActionsMap
|
||||
.append(R.id.menu_emulation_adjust_scale, EmulationActivity.MENU_ACTION_ADJUST_SCALE);
|
||||
buttonsActionsMap.append(R.id.menu_emulation_toggle_perf_stats,
|
||||
EmulationActivity.MENU_ACTION_TOGGLE_PREF_STATS);
|
||||
buttonsActionsMap.append(R.id.menu_emulation_show_fps,
|
||||
EmulationActivity.MENU_ACTION_SHOW_FPS);
|
||||
buttonsActionsMap.append(R.id.menu_exit, EmulationActivity.MENU_ACTION_EXIT);
|
||||
buttonsActionsMap.append(R.id.menu_screen_layout_landscape,
|
||||
EmulationActivity.MENU_ACTION_SCREEN_LAYOUT_LANDSCAPE);
|
||||
@ -93,6 +91,8 @@ public final class EmulationActivity extends AppCompatActivity {
|
||||
EmulationActivity.MENU_ACTION_SWAP_SCREENS);
|
||||
buttonsActionsMap
|
||||
.append(R.id.menu_emulation_reset_overlay, EmulationActivity.MENU_ACTION_RESET_OVERLAY);
|
||||
buttonsActionsMap
|
||||
.append(R.id.menu_emulation_show_overlay, EmulationActivity.MENU_ACTION_SHOW_OVERLAY);
|
||||
}
|
||||
|
||||
private View mDecorView;
|
||||
@ -248,6 +248,10 @@ public final class EmulationActivity extends AppCompatActivity {
|
||||
mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
|
||||
showRunningNotification();
|
||||
|
||||
// Override Citra core INI with the one set by our in game menu
|
||||
NativeLibrary.SwapScreens(EmulationMenuSettings.getSwapScreens(),
|
||||
getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -365,37 +369,28 @@ public final class EmulationActivity extends AppCompatActivity {
|
||||
.withEndAction(afterShowingScreenshot);
|
||||
}
|
||||
|
||||
// These must match what is defined in src/core/settings.h
|
||||
public static final int LayoutOption_Default = 0;
|
||||
public static final int LayoutOption_SingleScreen = 1;
|
||||
public static final int LayoutOption_LargeScreen = 2;
|
||||
public static final int LayoutOption_SideScreen = 3;
|
||||
public static final int LayoutOption_MobilePortrait = 4;
|
||||
public static final int LayoutOption_MobileLandscape = 5;
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
getMenuInflater().inflate(R.menu.menu_emulation, menu);
|
||||
|
||||
|
||||
// mPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
int layoutOption = mPreferences.getInt("LandscapeScreenLayout", LayoutOption_MobileLandscape);
|
||||
|
||||
int menuItemId = R.id.menu_screen_layout_landscape;
|
||||
switch (layoutOption) {
|
||||
case LayoutOption_SingleScreen:
|
||||
menuItemId = R.id.menu_screen_layout_single;
|
||||
int layoutOptionMenuItem = R.id.menu_screen_layout_landscape;
|
||||
switch (EmulationMenuSettings.getLandscapeScreenLayout()) {
|
||||
case EmulationMenuSettings.LayoutOption_SingleScreen:
|
||||
layoutOptionMenuItem = R.id.menu_screen_layout_single;
|
||||
break;
|
||||
case LayoutOption_SideScreen:
|
||||
menuItemId = R.id.menu_screen_layout_sidebyside;
|
||||
case EmulationMenuSettings.LayoutOption_SideScreen:
|
||||
layoutOptionMenuItem = R.id.menu_screen_layout_sidebyside;
|
||||
break;
|
||||
case LayoutOption_MobilePortrait:
|
||||
menuItemId = R.id.menu_screen_layout_portrait;
|
||||
case EmulationMenuSettings.LayoutOption_MobilePortrait:
|
||||
layoutOptionMenuItem = R.id.menu_screen_layout_portrait;
|
||||
break;
|
||||
}
|
||||
|
||||
menu.findItem(menuItemId).setChecked(true);
|
||||
menu.findItem(layoutOptionMenuItem).setChecked(true);
|
||||
menu.findItem(R.id.menu_emulation_show_fps).setChecked(EmulationMenuSettings.getShowFps());
|
||||
menu.findItem(R.id.menu_emulation_swap_screens).setChecked(EmulationMenuSettings.getSwapScreens());
|
||||
menu.findItem(R.id.menu_emulation_show_overlay).setChecked(EmulationMenuSettings.getShowOverlay());
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -422,40 +417,59 @@ public final class EmulationActivity extends AppCompatActivity {
|
||||
break;
|
||||
|
||||
// Toggle the visibility of the Performance stats TextView
|
||||
case MENU_ACTION_TOGGLE_PREF_STATS:
|
||||
mEmulationFragment.togglePerfStatsVisibility();
|
||||
break;
|
||||
case MENU_ACTION_SHOW_FPS: {
|
||||
final boolean isEnabled = !EmulationMenuSettings.getShowFps();
|
||||
EmulationMenuSettings.setShowFps(isEnabled);
|
||||
item.setChecked(isEnabled);
|
||||
|
||||
mEmulationFragment.updateShowFpsOverlay();
|
||||
break;
|
||||
}
|
||||
// Sets the screen layout to Landscape
|
||||
case MENU_ACTION_SCREEN_LAYOUT_LANDSCAPE:
|
||||
changeScreenOrientation(LayoutOption_MobileLandscape, item);
|
||||
changeScreenOrientation(EmulationMenuSettings.LayoutOption_MobileLandscape, item);
|
||||
break;
|
||||
|
||||
// Sets the screen layout to Portrait
|
||||
case MENU_ACTION_SCREEN_LAYOUT_PORTRAIT:
|
||||
changeScreenOrientation(LayoutOption_MobilePortrait, item);
|
||||
changeScreenOrientation(EmulationMenuSettings.LayoutOption_MobilePortrait, item);
|
||||
break;
|
||||
|
||||
// Sets the screen layout to Single
|
||||
case MENU_ACTION_SCREEN_LAYOUT_SINGLE:
|
||||
changeScreenOrientation(LayoutOption_SingleScreen, item);
|
||||
changeScreenOrientation(EmulationMenuSettings.LayoutOption_SingleScreen, item);
|
||||
break;
|
||||
|
||||
// Sets the screen layout to Side by Side
|
||||
case MENU_ACTION_SCREEN_LAYOUT_SIDEBYSIDE:
|
||||
changeScreenOrientation(LayoutOption_SideScreen, item);
|
||||
changeScreenOrientation(EmulationMenuSettings.LayoutOption_SideScreen, item);
|
||||
break;
|
||||
|
||||
// Swap the top and bottom screen locations
|
||||
case MENU_ACTION_SWAP_SCREENS:
|
||||
NativeLibrary.SwapScreens(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT);
|
||||
case MENU_ACTION_SWAP_SCREENS: {
|
||||
final boolean isEnabled = !EmulationMenuSettings.getSwapScreens();
|
||||
EmulationMenuSettings.setSwapScreens(isEnabled);
|
||||
item.setChecked(isEnabled);
|
||||
|
||||
NativeLibrary.SwapScreens(isEnabled, getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT);
|
||||
break;
|
||||
}
|
||||
|
||||
// Reset overlay placement
|
||||
case MENU_ACTION_RESET_OVERLAY:
|
||||
resetOverlay();
|
||||
break;
|
||||
|
||||
// Show or hide overlay
|
||||
case MENU_ACTION_SHOW_OVERLAY: {
|
||||
final boolean isEnabled = !EmulationMenuSettings.getShowOverlay();
|
||||
EmulationMenuSettings.setShowOverlay(isEnabled);
|
||||
item.setChecked(isEnabled);
|
||||
|
||||
mEmulationFragment.refreshInputOverlay();
|
||||
break;
|
||||
}
|
||||
|
||||
case MENU_ACTION_EXIT:
|
||||
toggleMenu(); // Hide the menu (it will be showing since we just clicked it)
|
||||
mEmulationFragment.stopEmulation();
|
||||
@ -468,13 +482,9 @@ public final class EmulationActivity extends AppCompatActivity {
|
||||
|
||||
private void changeScreenOrientation(int layoutOption, MenuItem item) {
|
||||
item.setChecked(true);
|
||||
|
||||
NativeLibrary.NotifyOrientationChange(layoutOption,
|
||||
getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT);
|
||||
|
||||
final SharedPreferences.Editor editor = mPreferences.edit();
|
||||
editor.putInt("LandscapeScreenLayout", layoutOption);
|
||||
editor.apply();
|
||||
EmulationMenuSettings.setLandscapeScreenLayout(layoutOption);
|
||||
}
|
||||
|
||||
private void editControlsPlacement() {
|
||||
@ -538,7 +548,6 @@ public final class EmulationActivity extends AppCompatActivity {
|
||||
builder.setMultiChoiceItems(R.array.n3dsButtons, enabledButtons,
|
||||
(dialog, indexSelected, isChecked) -> editor
|
||||
.putBoolean("buttonToggle" + indexSelected, isChecked));
|
||||
|
||||
builder.setPositiveButton(android.R.string.ok, (dialogInterface, i) ->
|
||||
{
|
||||
editor.apply();
|
||||
@ -705,9 +714,9 @@ public final class EmulationActivity extends AppCompatActivity {
|
||||
|
||||
@Retention(SOURCE)
|
||||
@IntDef({MENU_ACTION_EDIT_CONTROLS_PLACEMENT, MENU_ACTION_TOGGLE_CONTROLS, MENU_ACTION_ADJUST_SCALE,
|
||||
MENU_ACTION_EXIT, MENU_ACTION_TOGGLE_PREF_STATS, MENU_ACTION_SCREEN_LAYOUT_LANDSCAPE,
|
||||
MENU_ACTION_EXIT, MENU_ACTION_SHOW_FPS, MENU_ACTION_SCREEN_LAYOUT_LANDSCAPE,
|
||||
MENU_ACTION_SCREEN_LAYOUT_PORTRAIT, MENU_ACTION_SCREEN_LAYOUT_SINGLE, MENU_ACTION_SCREEN_LAYOUT_SIDEBYSIDE,
|
||||
MENU_ACTION_SWAP_SCREENS, MENU_ACTION_RESET_OVERLAY})
|
||||
MENU_ACTION_SWAP_SCREENS, MENU_ACTION_RESET_OVERLAY, MENU_ACTION_SHOW_OVERLAY})
|
||||
public @interface MenuAction {
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ import org.citra.citra_android.overlay.InputOverlay;
|
||||
import org.citra.citra_android.services.DirectoryInitializationService;
|
||||
import org.citra.citra_android.services.DirectoryInitializationService.DirectoryInitializationState;
|
||||
import org.citra.citra_android.utils.DirectoryStateReceiver;
|
||||
import org.citra.citra_android.utils.EmulationMenuSettings;
|
||||
import org.citra.citra_android.utils.Log;
|
||||
|
||||
public final class EmulationFragment extends Fragment implements SurfaceHolder.Callback {
|
||||
@ -97,30 +98,17 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
|
||||
surfaceView.getHolder().addCallback(this);
|
||||
|
||||
mInputOverlay = contents.findViewById(R.id.surface_input_overlay);
|
||||
if (mInputOverlay != null) {
|
||||
// If the input overlay was previously disabled, then don't show it.
|
||||
if (!mPreferences.getBoolean("showInputOverlay", true)) {
|
||||
mInputOverlay.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
mPerfStats = contents.findViewById(R.id.show_fps_text);
|
||||
|
||||
Button doneButton = contents.findViewById(R.id.done_control_config);
|
||||
if (doneButton != null) {
|
||||
doneButton.setOnClickListener(v -> stopConfiguringControls());
|
||||
}
|
||||
|
||||
mPerfStats = contents.findViewById(R.id.perf_stats_text);
|
||||
if (mPerfStats != null) {
|
||||
// If the overlay was previously disabled, then don't show it.
|
||||
if (!mPreferences.getBoolean("showPerfStats", true)) {
|
||||
mPerfStats.setVisibility(View.GONE);
|
||||
} else {
|
||||
updatePerfStats();
|
||||
}
|
||||
}
|
||||
// Show/hide the "Show FPS" overlay
|
||||
updateShowFpsOverlay();
|
||||
|
||||
// The new Surface created here will get passed to the native code via onSurfaceChanged.
|
||||
|
||||
return contents;
|
||||
}
|
||||
|
||||
@ -193,46 +181,31 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
|
||||
mInputOverlay.resetButtonPlacement();
|
||||
}
|
||||
|
||||
public void togglePerfStatsVisibility() {
|
||||
SharedPreferences.Editor editor = mPreferences.edit();
|
||||
public void updateShowFpsOverlay() {
|
||||
if (EmulationMenuSettings.getShowFps()) {
|
||||
final int SYSTEM_FPS = 0;
|
||||
final int FPS = 1;
|
||||
final int FRAMETIME = 2;
|
||||
final int SPEED = 3;
|
||||
|
||||
perfStatsUpdater = () ->
|
||||
{
|
||||
final DecimalFormat df = new DecimalFormat("#.#");
|
||||
double[] perfStats = NativeLibrary.GetPerfStats();
|
||||
mPerfStats.setText(String.format("FPS: %s Speed: %s%%", df.format(perfStats[FPS]),
|
||||
df.format(perfStats[SPEED] * 100.0)));
|
||||
|
||||
perfStatsUpdateHandler.postDelayed(perfStatsUpdater, 2000 /* 1s */);
|
||||
};
|
||||
perfStatsUpdateHandler.post(perfStatsUpdater);
|
||||
|
||||
// If the overlay is currently set to INVISIBLE
|
||||
if (!mPreferences.getBoolean("showPerfStats", false)) {
|
||||
updatePerfStats();
|
||||
// Set it to VISIBLE
|
||||
mPerfStats.setVisibility(View.VISIBLE);
|
||||
editor.putBoolean("showPerfStats", true);
|
||||
} else {
|
||||
stopPerfStatsUpdates();
|
||||
// Set it to INVISIBLE
|
||||
if (perfStatsUpdater != null) {
|
||||
perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater);
|
||||
}
|
||||
|
||||
mPerfStats.setVisibility(View.GONE);
|
||||
editor.putBoolean("showPerfStats", false);
|
||||
}
|
||||
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
private void updatePerfStats() {
|
||||
final int SYSTEM_FPS = 0;
|
||||
final int FPS = 1;
|
||||
final int FRAMETIME = 2;
|
||||
final int SPEED = 3;
|
||||
|
||||
perfStatsUpdater = () ->
|
||||
{
|
||||
final DecimalFormat df = new DecimalFormat("#.#");
|
||||
double[] perfStats = NativeLibrary.GetPerfStats();
|
||||
mPerfStats.setText(String.format("FPS: %s Speed: %s%%", df.format(perfStats[FPS]),
|
||||
df.format(perfStats[SPEED] * 100.0)));
|
||||
|
||||
perfStatsUpdateHandler.postDelayed(perfStatsUpdater, 2000 /* 1s */);
|
||||
};
|
||||
perfStatsUpdateHandler.post(perfStatsUpdater);
|
||||
}
|
||||
|
||||
private void stopPerfStatsUpdates() {
|
||||
if (perfStatsUpdater != null) {
|
||||
perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -19,8 +19,8 @@ public final class MenuFragment extends Fragment implements View.OnClickListener
|
||||
private static SparseIntArray buttonsActionsMap = new SparseIntArray();
|
||||
|
||||
static {
|
||||
buttonsActionsMap.append(R.id.menu_emulation_toggle_perf_stats,
|
||||
EmulationActivity.MENU_ACTION_TOGGLE_PREF_STATS);
|
||||
buttonsActionsMap.append(R.id.menu_emulation_show_fps,
|
||||
EmulationActivity.MENU_ACTION_SHOW_FPS);
|
||||
buttonsActionsMap.append(R.id.menu_exit, EmulationActivity.MENU_ACTION_EXIT);
|
||||
buttonsActionsMap.append(R.id.menu_screen_layout_landscape,
|
||||
EmulationActivity.MENU_ACTION_SCREEN_LAYOUT_LANDSCAPE);
|
||||
@ -32,6 +32,8 @@ public final class MenuFragment extends Fragment implements View.OnClickListener
|
||||
EmulationActivity.MENU_ACTION_SCREEN_LAYOUT_SIDEBYSIDE);
|
||||
buttonsActionsMap.append(R.id.menu_emulation_swap_screens,
|
||||
EmulationActivity.MENU_ACTION_SWAP_SCREENS);
|
||||
buttonsActionsMap.append(R.id.menu_emulation_show_overlay,
|
||||
EmulationActivity.MENU_ACTION_SHOW_OVERLAY);
|
||||
}
|
||||
|
||||
public static MenuFragment newInstance(String title) {
|
||||
|
@ -29,6 +29,7 @@ import org.citra.citra_android.NativeLibrary;
|
||||
import org.citra.citra_android.NativeLibrary.ButtonState;
|
||||
import org.citra.citra_android.NativeLibrary.ButtonType;
|
||||
import org.citra.citra_android.R;
|
||||
import org.citra.citra_android.utils.EmulationMenuSettings;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@ -648,8 +649,8 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener {
|
||||
getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT ?
|
||||
"-Portrait" : "";
|
||||
|
||||
if (mPreferences.getBoolean("showInputOverlay", true)) {
|
||||
// Add all the enabled overlay items back to the HashSet.
|
||||
// Add all the enabled overlay items back to the HashSet.
|
||||
if (EmulationMenuSettings.getShowOverlay()) {
|
||||
addOverlayControls(orientation);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,58 @@
|
||||
package org.citra.citra_android.utils;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import org.citra.citra_android.CitraApplication;
|
||||
|
||||
public class EmulationMenuSettings {
|
||||
private static SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext());
|
||||
|
||||
// These must match what is defined in src/core/settings.h
|
||||
public static final int LayoutOption_Default = 0;
|
||||
public static final int LayoutOption_SingleScreen = 1;
|
||||
public static final int LayoutOption_LargeScreen = 2;
|
||||
public static final int LayoutOption_SideScreen = 3;
|
||||
public static final int LayoutOption_MobilePortrait = 4;
|
||||
public static final int LayoutOption_MobileLandscape = 5;
|
||||
|
||||
public static int getLandscapeScreenLayout() {
|
||||
return mPreferences.getInt("EmulationMenuSettings_LandscapeScreenLayout", LayoutOption_MobileLandscape);
|
||||
}
|
||||
|
||||
public static void setLandscapeScreenLayout(int value) {
|
||||
final SharedPreferences.Editor editor = mPreferences.edit();
|
||||
editor.putInt("EmulationMenuSettings_LandscapeScreenLayout", value);
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
public static boolean getShowFps() {
|
||||
return mPreferences.getBoolean("EmulationMenuSettings_ShowFps", false);
|
||||
}
|
||||
|
||||
public static void setShowFps(boolean value) {
|
||||
final SharedPreferences.Editor editor = mPreferences.edit();
|
||||
editor.putBoolean("EmulationMenuSettings_ShowFps", value);
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
public static boolean getSwapScreens() {
|
||||
return mPreferences.getBoolean("EmulationMenuSettings_SwapScreens", false);
|
||||
}
|
||||
|
||||
public static void setSwapScreens(boolean value) {
|
||||
final SharedPreferences.Editor editor = mPreferences.edit();
|
||||
editor.putBoolean("EmulationMenuSettings_SwapScreens", value);
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
public static boolean getShowOverlay() {
|
||||
return mPreferences.getBoolean("EmulationMenuSettings_ShowOverylay", true);
|
||||
}
|
||||
|
||||
public static void setShowOverlay(boolean value) {
|
||||
final SharedPreferences.Editor editor = mPreferences.edit();
|
||||
editor.putBoolean("EmulationMenuSettings_ShowOverylay", value);
|
||||
editor.apply();
|
||||
}
|
||||
}
|
@ -124,7 +124,6 @@ void Config::ReadValues() {
|
||||
// Layout
|
||||
Settings::values.layout_option = static_cast<Settings::LayoutOption>(sdl2_config->GetInteger(
|
||||
"Layout", "layout_option", static_cast<int>(Settings::LayoutOption::MobileLandscape)));
|
||||
Settings::values.swap_screen = sdl2_config->GetBoolean("Layout", "swap_screen", false);
|
||||
Settings::values.custom_layout = sdl2_config->GetBoolean("Layout", "custom_layout", false);
|
||||
Settings::values.custom_top_left =
|
||||
static_cast<u16>(sdl2_config->GetInteger("Layout", "custom_top_left", 0));
|
||||
|
@ -215,9 +215,12 @@ void Java_org_citra_citra_1android_NativeLibrary_NotifyOrientationChange(
|
||||
}
|
||||
|
||||
void Java_org_citra_citra_1android_NativeLibrary_SwapScreens(JNIEnv* env, jobject obj,
|
||||
jboolean swap_screens,
|
||||
jboolean is_portrait_mode) {
|
||||
Settings::values.swap_screen = !Settings::values.swap_screen;
|
||||
VideoCore::g_renderer->UpdateCurrentFramebufferLayout(is_portrait_mode);
|
||||
Settings::values.swap_screen = swap_screens;
|
||||
if (VideoCore::g_renderer) {
|
||||
VideoCore::g_renderer->UpdateCurrentFramebufferLayout(is_portrait_mode);
|
||||
}
|
||||
}
|
||||
|
||||
void Java_org_citra_citra_1android_NativeLibrary_SetUserDirectory(JNIEnv* env, jobject obj,
|
||||
|
@ -139,7 +139,7 @@ JNIEXPORT void JNICALL Java_org_citra_citra_1android_NativeLibrary_NotifyOrienta
|
||||
JNIEnv* env, jobject obj, jint layout_option, jboolean is_portrait_mode);
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_citra_citra_1android_NativeLibrary_SwapScreens(
|
||||
JNIEnv* env, jobject obj, jboolean is_portrait_mode);
|
||||
JNIEnv* env, jobject obj, jboolean swap_screens, jboolean is_portrait_mode);
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_citra_citra_1android_NativeLibrary_Run__Ljava_lang_String_2(
|
||||
JNIEnv* env, jclass type, jstring path_);
|
||||
|
@ -22,7 +22,7 @@
|
||||
android:focusableInTouchMode="true"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/perf_stats_text"
|
||||
android:id="@+id/show_fps_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="false"
|
||||
|
@ -25,11 +25,6 @@
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_emulation_toggle_perf_stats"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/emulation_toggle_perf_stats"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_emulation_switch_screen_layout"
|
||||
app:showAsAction="never"
|
||||
@ -58,6 +53,19 @@
|
||||
<item
|
||||
android:id="@+id/menu_emulation_swap_screens"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/emulation_swap_screens"/>
|
||||
android:title="@string/emulation_swap_screens"
|
||||
android:checkable="true"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_emulation_show_fps"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/emulation_show_fps"
|
||||
android:checkable="true"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_emulation_show_overlay"
|
||||
app:showAsAction="never"
|
||||
android:title="@string/emulation_show_overlay"
|
||||
android:checkable="true"/>
|
||||
|
||||
</menu>
|
@ -55,8 +55,6 @@
|
||||
<string name="region">Emulated region</string>
|
||||
|
||||
<!-- Graphics settings strings -->
|
||||
<string name="show_fps">Show FPS</string>
|
||||
<string name="show_fps_description">Show the number of frames rendered per second as a measure of emulation speed.</string>
|
||||
<string name="vsync">Enable V-Sync</string>
|
||||
<string name="vsync_description">Synchronizes the game frame rate to the refresh rate of your device.</string>
|
||||
<string name="linear_filtering">Enable linear filtering</string>
|
||||
@ -110,11 +108,12 @@
|
||||
<!-- Emulation Menu -->
|
||||
<string name="emulation_screenshot">Take Screenshot</string>
|
||||
<string name="emulation_exit">Exit</string>
|
||||
<string name="emulation_toggle_perf_stats">Toggle Perf Stats</string>
|
||||
<string name="emulation_show_fps">Show FPS</string>
|
||||
<string name="emulation_configure_controls">Configure Controls</string>
|
||||
<string name="emulation_edit_layout">Edit Layout</string>
|
||||
<string name="emulation_done">Done</string>
|
||||
<string name="emulation_toggle_controls">Toggle Controls</string>
|
||||
<string name="emulation_toggle_all">Toggle All</string>
|
||||
<string name="emulation_control_scale">Adjust Scale</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>
|
||||
@ -125,6 +124,7 @@
|
||||
<string name="emulation_screen_layout_sidebyside">Side by Side Screens</string>
|
||||
<string name="emulation_swap_screens">Swap Screens</string>
|
||||
<string name="emulation_touch_overlay_reset">Reset Overlay</string>
|
||||
<string name="emulation_show_overlay">Show Overlay</string>
|
||||
<string name="emulation_close_game">Close Game</string>
|
||||
<string name="emulation_close_game_message">Are you sure that you would like to close the current game?</string>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user