android: allow changing settings while game is running

This commit is contained in:
BreadFish64 2020-03-17 14:36:57 -05:00 committed by bunnei
parent 02d92c4096
commit a02a70fd69
7 changed files with 26 additions and 1 deletions

View File

@ -100,6 +100,8 @@ public final class NativeLibrary {
*/
public static native void onTouchMoved(float x_axis, float y_axis);
public static native void ReloadSettings();
public static native String GetUserSetting(String gameID, String Section, String Key);
public static native void SetUserSetting(String gameID, String Section, String Key, String Value);

View File

@ -38,9 +38,11 @@ import org.citra.citra_emu.fragments.EmulationFragment;
import org.citra.citra_emu.fragments.MenuFragment;
import org.citra.citra_emu.model.settings.view.InputBindingSetting;
import org.citra.citra_emu.ui.main.MainPresenter;
import org.citra.citra_emu.ui.settings.SettingsActivity;
import org.citra.citra_emu.utils.Animations;
import org.citra.citra_emu.utils.ControllerMappingHelper;
import org.citra.citra_emu.utils.EmulationMenuSettings;
import org.citra.citra_emu.utils.SettingsFile;
import java.lang.annotation.Retention;
import java.util.List;
@ -64,6 +66,7 @@ public final class EmulationActivity extends AppCompatActivity {
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;
public static final int MENU_ACTION_OPEN_SETTINGS = 12;
private static final int EMULATION_RUNNING_NOTIFICATION = 0x1000;
private static final String BACKSTACK_NAME_MENU = "menu";
@ -482,6 +485,10 @@ public final class EmulationActivity extends AppCompatActivity {
mEmulationFragment.stopEmulation();
exitWithAnimation();
break;
case MENU_ACTION_OPEN_SETTINGS:
SettingsActivity.launch(this, SettingsFile.FILE_NAME_CONFIG,"");
break;
}
return true;

View File

@ -4,6 +4,7 @@ import android.content.IntentFilter;
import android.os.Bundle;
import android.text.TextUtils;
import org.citra.citra_emu.NativeLibrary;
import org.citra.citra_emu.model.settings.SettingSection;
import org.citra.citra_emu.services.DirectoryInitializationService;
import org.citra.citra_emu.services.DirectoryInitializationService.DirectoryInitializationState;
@ -119,6 +120,7 @@ public final class SettingsActivityPresenter {
SettingsFile.saveFile(SettingsFile.FILE_NAME_CONFIG, mSettings.get(SettingsFile.SETTINGS_DOLPHIN), mView);
mView.showToastMessage("Saved settings", false);
}
NativeLibrary.ReloadSettings();
}
}

View File

@ -395,6 +395,11 @@ void Java_org_citra_citra_1emu_NativeLibrary_WriteProfileResults(JNIEnv* env, jo
void Java_org_citra_citra_1emu_NativeLibrary_Run__Ljava_lang_String_2Ljava_lang_String_2Z(
JNIEnv* env, jobject obj, jstring jFile, jstring jSavestate, jboolean jDeleteSavestate) {}
void Java_org_citra_citra_1emu_NativeLibrary_ReloadSettings(JNIEnv* env, jclass type) {
Config{};
Settings::Apply();
}
jstring Java_org_citra_citra_1emu_NativeLibrary_GetUserSetting(JNIEnv* env, jclass type,
jstring gameID_,
jstring Section_, jstring Key_) {

View File

@ -159,6 +159,9 @@ JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_InitGameIni(JNIEn
jclass type,
jstring gameID_);
JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_ReloadSettings(JNIEnv* env,
jclass type);
JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_SetUserSetting(
JNIEnv* env, jclass type, jstring gameID_, jstring Section_, jstring Key_, jstring Value_);

View File

@ -68,4 +68,9 @@
android:title="@string/emulation_show_overlay"
android:checkable="true"/>
</menu>
<item
android:id="@+id/menu_emulation_open_settings"
app:showAsAction="never"
android:title="@string/emulation_open_settings"/>
</menu>

View File

@ -119,6 +119,7 @@
<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>
<string name="emulation_open_settings">Open Settings</string>
<string name="emulation_switch_screen_layout">Landscape Screen Layout</string>
<string name="emulation_screen_layout_landscape">Default</string>
<string name="emulation_screen_layout_portrait">Portrait</string>