summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorLillyJadeKatrin <lilly.kitty.1988@gmail.com>2025-04-24 07:51:01 -0400
committerLillyJadeKatrin <lilly.kitty.1988@gmail.com>2025-11-16 22:05:53 -0500
commitb662cd93cec27540c15c3ab58bc9831863b9291b (patch)
treea96c31f8012516d2f736e7f1615984447a4492dd /Source/Android/app/src/main/java
parentcff0ba76c1cfd8150b3f4ff2082579459829353a (diff)
Add Achievements submenu to Android settings
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt11
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt43
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.kt1
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt1
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt82
6 files changed, 139 insertions, 1 deletions
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
new file mode 100644
index 0000000000..345daf54a1
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.settings.model
+
+object AchievementModel {
+ @JvmStatic
+ external fun init()
+
+ @JvmStatic
+ external fun shutdown()
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt
index 0b6945ff13..1f8ef6e94b 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt
@@ -883,6 +883,42 @@ enum class BooleanSetting(
Settings.SECTION_LOGGER_OPTIONS,
"WriteToFile",
false
+ ),
+ ACHIEVEMENTS_ENABLED(
+ Settings.FILE_ACHIEVEMENTS,
+ Settings.SECTION_ACHIEVEMENTS,
+ "Enabled",
+ false
+ ),
+ ACHIEVEMENTS_HARDCORE_ENABLED(
+ Settings.FILE_ACHIEVEMENTS,
+ Settings.SECTION_ACHIEVEMENTS,
+ "HardcoreEnabled",
+ false
+ ),
+ ACHIEVEMENTS_UNOFFICIAL_ENABLED(
+ Settings.FILE_ACHIEVEMENTS,
+ Settings.SECTION_ACHIEVEMENTS,
+ "UnofficialEnabled",
+ false
+ ),
+ ACHIEVEMENTS_ENCORE_ENABLED(
+ Settings.FILE_ACHIEVEMENTS,
+ Settings.SECTION_ACHIEVEMENTS,
+ "EncoreEnabled",
+ false
+ ),
+ ACHIEVEMENTS_SPECTATOR_ENABLED(
+ Settings.FILE_ACHIEVEMENTS,
+ Settings.SECTION_ACHIEVEMENTS,
+ "SpectatorEnabled",
+ false
+ ),
+ ACHIEVEMENTS_PROGRESS_ENABLED(
+ Settings.FILE_ACHIEVEMENTS,
+ Settings.SECTION_ACHIEVEMENTS,
+ "ProgressEnabled",
+ true
);
override val isOverridden: Boolean
@@ -943,7 +979,12 @@ enum class BooleanSetting(
MAIN_TIME_TRACKING,
MAIN_EMULATE_SKYLANDER_PORTAL,
MAIN_EMULATE_INFINITY_BASE,
- MAIN_EMULATE_WII_SPEAK
+ MAIN_EMULATE_WII_SPEAK,
+ ACHIEVEMENTS_ENABLED,
+ ACHIEVEMENTS_HARDCORE_ENABLED,
+ ACHIEVEMENTS_UNOFFICIAL_ENABLED,
+ ACHIEVEMENTS_ENCORE_ENABLED,
+ ACHIEVEMENTS_SPECTATOR_ENABLED
)
private val NOT_RUNTIME_EDITABLE: Set<BooleanSetting> =
HashSet(listOf(*NOT_RUNTIME_EDITABLE_ARRAY))
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt
index 32ad11b3e1..9f91a4244c 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt
@@ -104,6 +104,7 @@ class Settings : Closeable {
const val FILE_GFX = "GFX"
const val FILE_LOGGER = "Logger"
const val FILE_WIIMOTE = "WiimoteNew"
+ const val FILE_ACHIEVEMENTS = "RetroAchievements"
const val FILE_GAME_SETTINGS_ONLY = "GameSettingsOnly"
const val SECTION_INI_ANDROID = "Android"
const val SECTION_INI_ANDROID_OVERLAY_BUTTONS = "AndroidOverlayButtons"
@@ -122,5 +123,6 @@ class Settings : Closeable {
const val SECTION_EMULATED_USB_DEVICES = "EmulatedUSBDevices"
const val SECTION_STEREOSCOPY = "Stereoscopy"
const val SECTION_ANALYTICS = "Analytics"
+ const val SECTION_ACHIEVEMENTS = "Achievements"
}
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.kt
index 0bfcb96d6c..74556b07d9 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.kt
@@ -14,6 +14,7 @@ enum class MenuTag {
CONFIG_GAME_CUBE("config_gamecube"),
CONFIG_SERIALPORT1("config_serialport1"),
CONFIG_WII("config_wii"),
+ CONFIG_ACHIEVEMENTS("config_achievements"),
CONFIG_ADVANCED("config_advanced"),
CONFIG_LOG("config_log"),
DEBUG("debug"),
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt
index 991d3c3c2b..513769a50d 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt
@@ -268,6 +268,7 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
titles[MenuTag.CONFIG_GAME_CUBE] = R.string.gamecube_submenu
titles[MenuTag.CONFIG_SERIALPORT1] = R.string.serialport1_submenu
titles[MenuTag.CONFIG_WII] = R.string.wii_submenu
+ titles[MenuTag.CONFIG_ACHIEVEMENTS] = R.string.achievements_submenu
titles[MenuTag.CONFIG_ADVANCED] = R.string.advanced_submenu
titles[MenuTag.DEBUG] = R.string.debug_submenu
titles[MenuTag.GRAPHICS] = R.string.graphics_settings
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 25acccb2fc..a5ee2f28df 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
@@ -111,6 +111,7 @@ class SettingsFragmentPresenter(
MenuTag.CONFIG_PATHS -> addPathsSettings(sl)
MenuTag.CONFIG_GAME_CUBE -> addGameCubeSettings(sl)
MenuTag.CONFIG_WII -> addWiiSettings(sl)
+ MenuTag.CONFIG_ACHIEVEMENTS -> addAchievementSettings(sl);
MenuTag.CONFIG_ADVANCED -> addAdvancedSettings(sl)
MenuTag.GRAPHICS -> addGraphicsSettings(sl)
MenuTag.CONFIG_SERIALPORT1 -> addSerialPortSubSettings(sl, serialPort1Type)
@@ -200,6 +201,7 @@ class SettingsFragmentPresenter(
sl.add(SubmenuSetting(context, R.string.paths_submenu, MenuTag.CONFIG_PATHS))
sl.add(SubmenuSetting(context, R.string.gamecube_submenu, MenuTag.CONFIG_GAME_CUBE))
sl.add(SubmenuSetting(context, R.string.wii_submenu, MenuTag.CONFIG_WII))
+ sl.add(SubmenuSetting(context, R.string.achievements_submenu, MenuTag.CONFIG_ACHIEVEMENTS))
sl.add(SubmenuSetting(context, R.string.advanced_submenu, MenuTag.CONFIG_ADVANCED))
sl.add(SubmenuSetting(context, R.string.log_submenu, MenuTag.CONFIG_LOG))
sl.add(SubmenuSetting(context, R.string.debug_submenu, MenuTag.DEBUG))
@@ -914,6 +916,86 @@ class SettingsFragmentPresenter(
)
}
+ private fun addAchievementSettings(sl: ArrayList<SettingsItem>) {
+ val achievementsEnabledSetting: AbstractBooleanSetting = object : AbstractBooleanSetting {
+ override val boolean: Boolean
+ get() = BooleanSetting.ACHIEVEMENTS_ENABLED.boolean
+
+ override fun setBoolean(settings: Settings, newValue: Boolean) {
+ BooleanSetting.ACHIEVEMENTS_ENABLED.setBoolean(settings, newValue)
+ if (newValue)
+ AchievementModel.init()
+ else
+ AchievementModel.shutdown()
+ loadSettingsList()
+ }
+
+ override val isOverridden: Boolean
+ get() = BooleanSetting.ACHIEVEMENTS_ENABLED.isOverridden
+
+ override val isRuntimeEditable: Boolean
+ get() = BooleanSetting.ACHIEVEMENTS_ENABLED.isRuntimeEditable
+
+ override fun delete(settings: Settings): Boolean {
+ val result = BooleanSetting.ACHIEVEMENTS_ENABLED.delete(settings)
+ AchievementModel.shutdown()
+ loadSettingsList()
+ return result
+ }
+ }
+
+ sl.add(
+ SwitchSetting(
+ context,
+ achievementsEnabledSetting,
+ R.string.achievements_enabled,
+ 0
+ )
+ )
+ if (BooleanSetting.ACHIEVEMENTS_ENABLED.boolean) {
+ sl.add(
+ SwitchSetting(
+ context,
+ BooleanSetting.ACHIEVEMENTS_HARDCORE_ENABLED,
+ R.string.achievements_hardcore_enabled,
+ 0
+ )
+ )
+ sl.add(
+ SwitchSetting(
+ context,
+ BooleanSetting.ACHIEVEMENTS_UNOFFICIAL_ENABLED,
+ R.string.achievements_unofficial_enabled,
+ 0
+ )
+ )
+ sl.add(
+ SwitchSetting(
+ context,
+ BooleanSetting.ACHIEVEMENTS_ENCORE_ENABLED,
+ R.string.achievements_encore_enabled,
+ 0
+ )
+ )
+ sl.add(
+ SwitchSetting(
+ context,
+ BooleanSetting.ACHIEVEMENTS_SPECTATOR_ENABLED,
+ R.string.achievements_spectator_enabled,
+ 0
+ )
+ )
+ sl.add(
+ SwitchSetting(
+ context,
+ BooleanSetting.ACHIEVEMENTS_PROGRESS_ENABLED,
+ R.string.achievements_progress_enabled,
+ 0
+ )
+ )
+ }
+ }
+
private fun addAdvancedSettings(sl: ArrayList<SettingsItem>) {
val SYNC_GPU_NEVER = 0
val SYNC_GPU_ON_IDLE_SKIP = 1