diff --git a/assets/locales.json b/assets/locales.json
index f1d2b5719..903a3e6ef 100644
--- a/assets/locales.json
+++ b/assets/locales.json
@@ -6445,26 +6445,27 @@
{
"ID": "SettingsButtonResetConfirm",
"Translations": {
- "ar_SA": "أريد إعادة تعيين إعداداتي",
- "de_DE": "Ich möchte meine Einstellungen zurücksetzen",
- "el_GR": "Θέλω να επαναφέρω τις ρυθμίσεις μου",
- "en_US": "I Want To Reset My Settings",
- "es_ES": "Quiero Restablecer Mi Configuración",
- "fr_FR": "Je Veux Réinitialiser Mes Paramètres",
- "he_IL": "אני רוצה לאפס את ההגדרות שלי",
- "it_IT": "Voglio reimpostare le mie impostazioni",
- "ja_JP": "設定をリセットしたいです",
- "ko_KR": "설정을 초기화하고 싶습니다",
- "no_NO": "Jeg vil tilbakestille innstillingene mine",
- "pl_PL": "Chcę zresetować moje ustawienia",
- "pt_BR": "Quero redefinir minhas configurações",
- "ru_RU": "Я хочу сбросить свои настройки",
- "sv_SE": "Jag vill nollställa mina inställningar",
- "th_TH": "ฉันต้องการรีเซ็ตการตั้งค่าของฉัน",
- "tr_TR": "Ayarlarımı sıfırlamak istiyorum",
- "uk_UA": "Я хочу скинути налаштування",
- "zh_CN": "我要重置我的设置",
- "zh_TW": "我想重設我的設定"
+ "ar_SA": "",
+ "de_DE": "",
+ "el_GR": "",
+ "en_US": "I want to reset my settings.",
+ "es_ES": "Quiero restablecer mi Configuración.",
+ "fr_FR": "Je veux réinitialiser mes paramètres.",
+ "he_IL": "",
+ "it_IT": "Voglio ripristinare le mie impostazioni.",
+ "ja_JP": "",
+ "ko_KR": "설정을 초기화하고 싶습니다.",
+ "no_NO": "Jeg vil tilbakestille innstillingene mine.",
+ "pl_PL": "",
+ "pt_BR": "Quero redefinir minhas configurações.",
+ "ru_RU": "Я хочу сбросить свои настройки.",
+ "sv_SE": "Jag vill nollställa mina inställningar.",
+ "th_TH": "",
+ "tr_TR": "",
+ "uk_UA": "Я хочу скинути налаштування.",
+ "zh_CN": "我要重置我的设置。",
+ "zh_TW": "我想重設我的設定。"
+
}
},
{
diff --git a/src/Ryujinx/Systems/AppLibrary/ApplicationData.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationData.cs
index 5656d6e73..c10ec69bd 100644
--- a/src/Ryujinx/Systems/AppLibrary/ApplicationData.cs
+++ b/src/Ryujinx/Systems/AppLibrary/ApplicationData.cs
@@ -11,11 +11,13 @@ using LibHac.Tools.FsSystem.NcaUtils;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Systems.PlayReport;
using Ryujinx.Ava.Utilities;
+using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.Loaders.Processes.Extensions;
using System;
using System.IO;
+using System.Linq;
using System.Text.Json.Serialization;
namespace Ryujinx.Ava.Systems.AppLibrary
@@ -84,6 +86,32 @@ namespace Ryujinx.Ava.Systems.AppLibrary
public LocaleKeys? PlayabilityStatus => Compatibility.Convert(x => x.Status).OrElse(null);
+ public bool HasPtcCacheFiles
+ {
+ get
+ {
+ DirectoryInfo mainDir = new(System.IO.Path.Combine(AppDataManager.GamesDirPath, IdString, "cache", "cpu", "0"));
+ DirectoryInfo backupDir = new(System.IO.Path.Combine(AppDataManager.GamesDirPath, IdString, "cache", "cpu", "1"));
+
+ return (mainDir.Exists && (mainDir.EnumerateFiles("*.cache").Any() || mainDir.EnumerateFiles("*.info").Any())) ||
+ (backupDir.Exists && (backupDir.EnumerateFiles("*.cache").Any() || backupDir.EnumerateFiles("*.info").Any()));
+ }
+ }
+
+ public bool HasShaderCacheFiles
+ {
+ get
+ {
+ DirectoryInfo shaderCacheDir = new(System.IO.Path.Combine(AppDataManager.GamesDirPath, IdString, "cache", "shader"));
+
+ if (!shaderCacheDir.Exists) return false;
+
+ return shaderCacheDir.EnumerateDirectories("*").Any() ||
+ shaderCacheDir.GetFiles("*.toc").Length != 0 ||
+ shaderCacheDir.GetFiles("*.data").Length != 0;
+ }
+ }
+
public string LocalizedStatusTooltip =>
Compatibility.Convert(x =>
#pragma warning disable CS8509 // It is exhaustive for all possible values this can contain.
diff --git a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml
index 909154540..9f2999a4c 100755
--- a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml
+++ b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml
@@ -120,13 +120,13 @@
CommandParameter="{Binding}"
Header="{ext:Locale GameListContextMenuCacheManagementNukePptc}"
Icon="{ext:Icon fa-solid fa-trash-can}"
- IsEnabled="{Binding HasPtcCacheFiles}" />
+ IsEnabled="{Binding SelectedApplication.HasPtcCacheFiles, FallbackValue=False}" />
+ IsEnabled="{Binding SelectedApplication.HasShaderCacheFiles, FallbackValue=False}" />