From e19922c5de083e718c15c7b27f6780a4e5a740ed Mon Sep 17 00:00:00 2001 From: Greg Wicks Date: Fri, 16 Feb 2018 13:47:52 -0500 Subject: Android: Implement game-specific settings overrides UI --- Source/Android/jni/MainAndroid.cpp | 52 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) (limited to 'Source/Android/jni/MainAndroid.cpp') 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) { -- cgit v1.2.3