diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt index 6626ba0df35..1625c98fb08 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt @@ -12,6 +12,9 @@ object AchievementModel { @JvmStatic external fun logout() + @JvmStatic + external fun isHardcoreModeActive(): Boolean + @JvmStatic external fun shutdown() } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt index 0fd8a97782b..15947711283 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt @@ -251,7 +251,7 @@ class SettingsFragmentPresenter( FloatSetting.MAIN_EMULATION_SPEED, R.string.speed_limit, 0, - 0f, + if (AchievementModel.isHardcoreModeActive()) 100f else 0f, 200f, "%", 1f, diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.kt index b668e08da8e..6bf9c7c147d 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.kt @@ -19,6 +19,7 @@ import org.dolphinemu.dolphinemu.NativeLibrary import org.dolphinemu.dolphinemu.R import org.dolphinemu.dolphinemu.activities.EmulationActivity import org.dolphinemu.dolphinemu.databinding.FragmentIngameMenuBinding +import org.dolphinemu.dolphinemu.features.settings.model.AchievementModel import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting import org.dolphinemu.dolphinemu.features.settings.model.IntSetting import org.dolphinemu.dolphinemu.utils.InsetsHelper @@ -114,11 +115,16 @@ class MenuFragment : Fragment(), View.OnClickListener { override fun onResume() { super.onResume() val savestatesEnabled = BooleanSetting.MAIN_ENABLE_SAVESTATES.boolean + val hardcoreEnabled = AchievementModel.isHardcoreModeActive() val savestateVisibility = if (savestatesEnabled) View.VISIBLE else View.GONE binding.menuQuicksave.visibility = savestateVisibility binding.menuQuickload.visibility = savestateVisibility binding.menuEmulationSaveRoot.visibility = savestateVisibility binding.menuEmulationLoadRoot.visibility = savestateVisibility + // While technically the option is still enabled, AchievementManager + // will block the load and send a message to the screen. + binding.menuQuickload.paint.isStrikeThruText = hardcoreEnabled + binding.menuEmulationLoadRoot.paint.isStrikeThruText = hardcoreEnabled } override fun onDestroyView() { diff --git a/Source/Android/jni/AchievementAdapter.cpp b/Source/Android/jni/AchievementAdapter.cpp index 4ecb73d653c..f3f27c8f8da 100644 --- a/Source/Android/jni/AchievementAdapter.cpp +++ b/Source/Android/jni/AchievementAdapter.cpp @@ -27,6 +27,13 @@ Java_org_dolphinemu_dolphinemu_features_settings_model_AchievementModel_logout(J AchievementManager::GetInstance().Logout(); } +JNIEXPORT jboolean JNICALL +Java_org_dolphinemu_dolphinemu_features_settings_model_AchievementModel_isHardcoreModeActive( + JNIEnv* env, jclass) +{ + return AchievementManager::GetInstance().IsHardcoreModeActive(); +} + JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_features_settings_model_AchievementModel_shutdown(JNIEnv* env, jclass)