diff options
| author | Greg Wicks <gwicks95@gmail.com> | 2018-02-16 13:47:52 -0500 |
|---|---|---|
| committer | Greg Wicks <gwicks95@gmail.com> | 2018-02-16 13:47:52 -0500 |
| commit | e19922c5de083e718c15c7b27f6780a4e5a740ed (patch) | |
| tree | 7a89a52cebdaeeb6ab567cae09b7463ef214da80 /Source/Android/jni/MainAndroid.cpp | |
| parent | f3826b4e9224b61119c72efcda808f7c07e58a72 (diff) | |
Android: Implement game-specific settings overrides UI
Diffstat (limited to 'Source/Android/jni/MainAndroid.cpp')
| -rw-r--r-- | Source/Android/jni/MainAndroid.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/Source/Android/jni/MainAndroid.cpp b/Source/Android/jni/MainAndroid.cpp index ad0c0cb7c6..404ce93e3a 100644 --- a/Source/Android/jni/MainAndroid.cpp +++ b/Source/Android/jni/MainAndroid.cpp @@ -30,6 +30,7 @@ #include "Core/Boot/Boot.h" #include "Core/BootManager.h" +#include "Core/ConfigLoaders/GameConfigLoader.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/HW/DVD/DVDInterface.h" @@ -640,6 +641,57 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_eglBindAPI(J eglBindAPI(api); } +JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_InitGameIni(JNIEnv* env, + jobject obj, + jstring jGameID) +{ + // Initialize an empty INI file + IniFile ini; + std::string gameid = GetJString(env, jGameID); + + __android_log_print(ANDROID_LOG_DEBUG, "InitGameIni", "Initializing base game config file"); + ini.Save(File::GetUserPath(D_GAMESETTINGS_IDX) + gameid + ".ini"); +} + +JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetUserSetting( + JNIEnv* env, jobject obj, jstring jGameID, jstring jSection, jstring jKey) +{ + IniFile ini; + std::string gameid = GetJString(env, jGameID); + std::string section = GetJString(env, jSection); + std::string key = GetJString(env, jKey); + + ini = SConfig::GetInstance().LoadGameIni(gameid, 0); + std::string value; + + ini.GetOrCreateSection(section)->Get(key, &value, "-1"); + + return env->NewStringUTF(value.c_str()); +} + +JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetUserSetting( + JNIEnv* env, jobject obj, jstring jGameID, jstring jSection, jstring jKey, jstring jValue) +{ + IniFile ini; + std::string gameid = GetJString(env, jGameID); + std::string section = GetJString(env, jSection); + std::string key = GetJString(env, jKey); + std::string val = GetJString(env, jValue); + + ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + gameid + ".ini"); + + if (val != "-1") + { + ini.GetOrCreateSection(section)->Set(key, val); + } + else + { + ini.GetOrCreateSection(section)->Delete(key); + } + + ini.Save(File::GetUserPath(D_GAMESETTINGS_IDX) + gameid + ".ini"); +} + JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetConfig( JNIEnv* env, jobject obj, jstring jFile, jstring jSection, jstring jKey, jstring jDefault) { |
