diff --git a/src/Ryujinx/Assets/locales.json b/assets/locales.json similarity index 99% rename from src/Ryujinx/Assets/locales.json rename to assets/locales.json index a13e60d68..733f988ed 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/assets/locales.json @@ -460,7 +460,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "스크린샷 폴더 열기", - "no_NO": "", + "no_NO": "Åpne Skjermbilde Mappen", "pl_PL": "", "pt_BR": "Abrir Pasta de Capturas de Tela", "ru_RU": "Открыть папку со скриншотами", @@ -2760,7 +2760,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "사용자 정의 구성 만들기", - "no_NO": "", + "no_NO": "Opprett egendefinert konfigurasjon", "pl_PL": "", "pt_BR": "", "ru_RU": "Задать индивидуальные параметры", @@ -2785,7 +2785,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "사용자 정의 구성 편집", - "no_NO": "", + "no_NO": "Rediger egendefinert konfigurasjon", "pl_PL": "", "pt_BR": "", "ru_RU": "Изменить индивидуальные параметры", @@ -2860,7 +2860,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "선택한 게임에 대한 기존 독립 구성 편집", - "no_NO": "", + "no_NO": "Rediger din eksisterende uavhengige konfigurasjon for det valgte spillet", "pl_PL": "", "pt_BR": "", "ru_RU": "Отредактировать существующие независимые параметры для выбранной игры.", @@ -4934,16 +4934,16 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", - "no_NO": "", + "ko_KR": "터보 모드 배수 :", + "no_NO": "Multiplikator i turbomodus:", "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Multiplikator för turboläge:", "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "涡轮模式倍数:", "zh_TW": "" } }, @@ -4959,16 +4959,16 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", - "no_NO": "", + "ko_KR": "터보 모드 배수 목표 값입니다.\n\n모르면 200으로 두세요.", + "no_NO": "Målverdien for multiplikatoren i turbomodus. \n\nLa syå på 200 hvis du er usikker.", "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Målvärdet för multiplikatorn i turboläget. \n\nLämna den på 200 om du är osäker.", "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "涡轮模式倍数的目标值。\n\n如果不确定请保留为 200。", "zh_TW": "" } }, @@ -4984,16 +4984,16 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", - "no_NO": "", + "ko_KR": "터보 모드는 게임이 프레임 속도에 민감하지 않을 때 효과적으로 속도를 높이거나 낮추는 에뮬레이터 기능입니다.\n이 기능은 Ryujinx 키보드 단축키 설정에서 구성할 수 있는 단축키를 사용하여 게임 내에서 전환할 수 있습니다.\n\n모르면 200으로 두세요.", + "no_NO": "Turbo-modus er en emulatorfunksjon som effektivt øker eller senker hastigheten når et spill ikke er følsom for bildefrekvens.\nDu kan slå på denne funksjonen i spillet med en hurtigtast, som kan konfigureres i Ryujinx Keyboard Hotkeys-innstillingene.\n\nLa den stå på 200 hvis du er usikker.", "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Turboläget är en emulatorfunktion som effektivt ökar eller sänker hastigheten när ett spel inte är känsligt för bildfrekvens.\nDu kan växla denna funktion i spelet med en snabbtangent, konfigurerbar i Ryujinx inställningar för snabbtangenter.\n\nLämna den på 200 om du är osäker.", "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "涡轮模式是一种模拟器功能当游戏对帧率不敏感时它可以有效地导致加速或降速。\n您可以在游戏中使用热键切换此功能,它可以在 Ryujinx 的键盘热键设置进行设置。\n\n如果不确定则保留为 200。", "zh_TW": "" } }, @@ -5360,7 +5360,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "컨트롤러 애플릿 무시", - "no_NO": "", + "no_NO": "Ignorer Kontroller-applet", "pl_PL": "", "pt_BR": "Ignorar Applet do Controlador", "ru_RU": "Игнорировать апплет контроллера", @@ -5372,6 +5372,31 @@ "zh_TW": "忽略控制器小程式" } }, + { + "ID": "SettingsTabSystemSkipUserProfilesManager", + "Translations": { + "ar_SA": "تخطي مربع حوار 'إدارة الملفات الشخصية للمستخدم'", + "de_DE": "Überspringen des Dialogs 'Benutzerprofile verwalten'", + "el_GR": "Παράκαμψη διαλόγου 'Διαχείριση Προφίλ _Χρηστών'", + "en_US": "Skip dialog 'Manage User Profiles'", + "es_ES": "Omitir el diálogo 'Gestionar perfiles de usuario'", + "fr_FR": "Ignorer le dialogue 'Gérer les profils d'utilisateurs'", + "he_IL": "דילוג על הדיאלוג 'נהל פרופילי משתמש'", + "it_IT": "Salta la finestra di dialogo 'Gestisci i profili utente'", + "ja_JP": "「ユーザプロファイルを管理」ダイアログをスキップ", + "ko_KR": "'사용자 프로필 관리' 대화 상자 건너뛰기", + "no_NO": "Hopp over dialogen 'Administrere Brukerprofiler'", + "pl_PL": "Pomiń okno dialogowe 'Zarządzaj profilami użytkowników'", + "pt_BR": "Ignorar a caixa de diálogo 'Gerenciar Perfis de Usuário'", + "ru_RU": "Пропустить диалог 'Менеджер учётных записей'", + "sv_SE": "Hoppa över dialogen 'Hantera användarprofiler'", + "th_TH": "ข้ามหน้าต่างโต้ตอบ 'จัดการโปรไฟล์ผู้ใช้งาน'", + "tr_TR": "'Kullanıcı Profillerini Yönet' iletişim kutusunu atla", + "uk_UA": "Пропустити діалог 'Керувати профілями користувачів'", + "zh_CN": "跳过对话框“管理用户账户”", + "zh_TW": "略過對話框「管理使用者設定檔」" + } + }, { "ID": "SettingsTabGraphics", "Translations": { @@ -10114,7 +10139,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Enter (блок цифр)", - "sv_SE": "", + "sv_SE": "Enter (numerisk)", "th_TH": "", "tr_TR": "", "uk_UA": "Enter (цифровий блок)", @@ -11164,7 +11189,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Тачпад", - "sv_SE": "", + "sv_SE": "Pekplatta", "th_TH": "", "tr_TR": "", "uk_UA": "Сенсорна панель", @@ -16885,7 +16910,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "앱이 실행 중일 때, 게임패드의 연결이 끊어지면 컨트롤러 애플릿 대화 상자가 나타나지 않습니다.\n\n모르시면 끔으로 두십시오.", - "no_NO": "", + "no_NO": "Håndkontroller-appleten vises ikke hvis gamepaden kobles fra mens et program kjører.", "pl_PL": "", "pt_BR": "A caixa de diálogo do Applet do controlador não aparecerá se o controle for desconectado enquanto um aplicativo estiver em execução.\n\nDeixe a opção DESLIGADO se não tiver certeza.", "ru_RU": "Диалоговое окно апплета контроллера не будет отображаться, если геймпад отключен во время работы приложения.\n\nОставьте выключенным, если не уверены.", @@ -16897,6 +16922,31 @@ "zh_TW": "在模擬應用程式時如果遊戲手柄中斷連線則不會顯示控制器小程式。\n\n如果不確定,請保持關閉狀態。" } }, + { + "ID": "SkipUserProfilesTooltip", + "Translations": { + "ar_SA": "", + "de_DE": "Diese Option überspringt den Dialog 'Benutzerprofile verwalten' während des Spiels und verwendet ein voreingestelltes Profil.\n\nDie Profilumschaltung finden Sie unter 'Einstellungen' - 'Benutzerprofile verwalten'. Wählen Sie das gewünschte Profil aus, bevor Sie das Spiel laden.", + "el_GR": "Αυτή η επιλογή παρακάμπτει το παράθυρο διαλόγου 'Διαχειριστής Προφίλ Χρήστη' κατά τη διάρκεια του παιχνιδιού, χρησιμοποιώντας ένα προεπιλεγμένο προφίλ.\n\nΗ εναλλαγή προφίλ βρίσκεται στις 'Ρυθμίσεις' - 'Διαχειριστής Προφίλ Χρήστη'. Επιλέξτε το επιθυμητό προφίλ πριν φορτώσετε το παιχνίδι.", + "en_US": "This option skips the 'Manage User Profiles' dialog during gameplay, using a pre-selected profile.\n\nProfile switching is found in 'Settings' - 'Manager User Profiles'. Select the desired profile before loading the game.", + "es_ES": "Esta opción omite el diálogo de 'Gestionar perfiles de usuario' durante el juego, utilizando un perfil preseleccionado.\n\nEl cambio de perfil se encuentra en 'Configuración' - 'Gestionar perfiles de usuario'. Seleccione el perfil deseado antes de cargar el juego.", + "fr_FR": "Cette option permet d'éviter le dialogue du 'Gérer les profils d'utilisateurs' pendant le jeu, en utilisant un profil pré-sélectionné.\n\nLa sélection du profil se trouve dans 'Paramètres' - 'Gérer les profils d'utilisateurs'. Sélectionnez le profil souhaité avant de charger la partie.", + "he_IL": "", + "it_IT": "Questa opzione salta la finestra di dialogo 'Gestisci i profili utente' durante il gioco, utilizzando un profilo pre-selezionato.\n\nIl cambio del profilo si trova in 'Impostazioni' - 'Gestisci i profili utente'. Seleziona il profilo desiderato prima di caricare il gioco.", + "ja_JP": "このオプションは、ゲームプレイ中に「ユーザプロファイルを管理」ダイアログをスキップし、事前に選択されたプロファイルを使用します。\n\nプロファイルの切り替えは、「設定」-「ユーザプロファイルを管理」で見つけることができます。ゲームのロード前に目的のプロファイルをを選択してください。", + "ko_KR": "이 옵션은 게임 플레이 중 '사용자 프로필 관리' 대화 상자를 건너뛰고, 미리 선택된 프로필을 사용합니다.\n\n프로필 전환은 '설정' - '사용자 프로필 관리'에서 찾을 수 있습니다. 게임 로드 전에 원하는 프로필을 선택하세요.", + "no_NO": "Dette alternativet hopper over dialogen 'Administrere Brukerprofiler' under spilling, og bruker en forhåndsvalgt profil.\n\nProfilbytte finnes i 'Innstillinger' - 'Administrer Brukerprofiler'. Velg ønsket profil før du laster spillet.", + "pl_PL": "Ta opcja pomija okno dialogowe 'Zarządzaj profilami użytkowników' podczas gry, używając wcześniej wybrany profil.\n\nPrzełączanie profili można znaleźć w 'Ustawienia' - 'Zarządzaj Profilami Użytkowników'. Wybierz żądany profil przed załadowaniem gry.", + "pt_BR": "Esta opção ignora a caixa de diálogo 'Gerenciar Perfis de Usuário' durante o jogo, usando um perfil pré-selecionado.\n\nO gerenciamento de perfis pode ser encontrado em 'Configurações' - 'Gerenciar Perfis de Usuários'. Selecione o perfil desejado antes de carregar o jogo.", + "ru_RU": "Эта опция пропускает диалоговое окно 'Менеджер учётных записей' во время игры, используя предварительно выбранный профиль.\n\nПереключение профилей можно найти в 'Параметры' - 'Менеджер учётных записей'. Выберите желаемый профиль перед загрузкой игры.", + "sv_SE": "Det här alternativet hoppar över dialogrutan 'Hantera användarprofiler' under spelet och använder en förvald profil.\n\nProfilväxling finns i 'Inställningar' - 'Hantera användarprofiler'. Välj önskad profil innan du laddar spelet.", + "th_TH": "ตัวเลือกนี้จะข้ามหน้าต่าง 'จัดการโปรไฟล์ผู้ใช้งาน' ระหว่างเล่นเกม โดยใช้โปรไฟล์ที่เลือกไว้ล่วงหน้า\n\nการสลับโปรไฟล์สามารถพบได้ใน 'ตั้งค่า' - 'จัดการโปรไฟล์ผู้ใช้งาน' เลือกโปรไฟล์ที่คุณต้องการก่อนโหลดเกม", + "tr_TR": "Bu seçenek, oyun sırasında 'Kullanıcı Profillerini Yönet' iletişim kutusunu atlar ve önceden seçilmiş bir profil kullanır.\n\nProfil değiştirme 'Seçenekler' - 'Kullanıcı Profillerini Yönet' bölümünde bulunur. Oyunu yüklemeden önce istediğiniz profili seçin.", + "uk_UA": "Ця опція пропускає діалогове вікно 'Керувати профілями користувачів' під час гри, використовуючи попередньо вибраний профіль.\n\nПеремикання профілів можна знайти в 'Налаштування' - 'Керувати профілями користувачів'. Виберіть потрібний профіль перед завантаженням гри.", + "zh_CN": "此选项跳过游戏过程中的“管理用户账户”对话框,使用预选的配置。\n\n可以在“设置” - “管理用户账户”中找到配置文件切换。 在加载游戏之前选择所需的配置文件。", + "zh_TW": "這個選項跳過遊戲過程中的「管理使用者設定檔」對話框,使用預先選取的設定。\n\n可以在「設定」-「管理使用者設定檔」中找到設定檔切換。 在載入遊戲前選擇您需要的設定檔。" + } + }, { "ID": "GraphicsBackendThreadingTooltip", "Translations": { @@ -17560,7 +17610,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "Ryujinx 스크린샷 폴더 열기", - "no_NO": "", + "no_NO": "Åpne Ryujinx skjermbildemappen", "pl_PL": "", "pt_BR": "Abre a pasta de capturas de tela do Ryujinx", "ru_RU": "Открывает папку скриншотов Ryujinx", @@ -18309,12 +18359,12 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "{0}FPS({1}밀리초)", "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "{0} bilder/s ({1}ms)", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -18334,16 +18384,16 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "{0}FPS({1}밀리초), ({2}%) 터보", "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "{0} bilder/s ({1}ms), Turbo ({2}%)", "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "{0} FPS ({1}ms), 涡轮 ({2}%)", "zh_TW": "" } }, @@ -24084,16 +24134,16 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "터보 모드 :", "no_NO": "", "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Turboläge:", "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "涡轮模式: ", "zh_TW": "" } }, @@ -24109,16 +24159,16 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", - "no_NO": "", + "ko_KR": "터보 모드 단축키입니다.\nRyujinx CPU 설정에서 터보 모드의 동작을 구성합니다.\n\n모르면 바인딩 해제 상태로 두세요.", + "no_NO": "Hurtigtasten for turbo-modus.\nKonfigurer oppførselen til turbo-modus i Ryujinx CPU-innstillinger.\n\nLa være ubundet hvis du er usikker.", "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Snabbtangenten för turboläge.\nKonfigurera beteendet för turboläge i Ryujinx CPU-inställningar.\n\nLämna Obunden om du är osäker.", "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "涡轮模式热键。\n可以在 Ryujinx CPU 设置中配置涡轮模式的行为。\n\n如果不确定请保留为未绑定。", "zh_TW": "" } }, @@ -24134,16 +24184,16 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", - "no_NO": "", + "ko_KR": "누르고 있는 동안만", + "no_NO": "Bare mens du trykker på", "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Endast när du trycker ner", "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "仅在按下时", "zh_TW": "" } }, @@ -24185,7 +24235,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "호환성 목록 - {0}개 항목", - "no_NO": "", + "no_NO": "Kompatibilitetsliste - {0} oppføringer", "pl_PL": "", "pt_BR": "", "ru_RU": "Список совместимости — записей: {0}", @@ -24334,7 +24384,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "플레이 가능", + "ko_KR": "원활", "no_NO": "Spillbar", "pl_PL": "", "pt_BR": "Jogável", @@ -24359,7 +24409,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "게임 내", + "ko_KR": "가능", "no_NO": "", "pl_PL": "", "pt_BR": "No jogo", @@ -24409,7 +24459,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "부츠", + "ko_KR": "부팅", "no_NO": "Starter", "pl_PL": "", "pt_BR": "Inicializa", @@ -24434,7 +24484,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "없음", + "ko_KR": "불가능", "no_NO": "Ingenting", "pl_PL": "", "pt_BR": "Nada", @@ -24585,7 +24635,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "사용자 정의 설정", - "no_NO": "", + "no_NO": "Tilpasset konfigurasjon", "pl_PL": "", "pt_BR": "", "ru_RU": "Индивидуальные параметры", diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index b8e14cd30..bc2131035 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -15,7 +15,7 @@ namespace Ryujinx.BuildValidationTasks { Console.WriteLine("Running Locale Validation Task..."); - string path = projectPath + "src/Ryujinx/Assets/locales.json"; + string path = projectPath + "assets/locales.json"; string data; using (StreamReader sr = new(path)) diff --git a/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs b/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs index 67c68d8ec..60120ab58 100644 --- a/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs +++ b/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs @@ -57,16 +57,19 @@ namespace Ryujinx.Input.SDL2 return null; } + // Remove the first 4 char of the guid (CRC part) to make it stable + string guidString = "0000" + guid.ToString().Substring(4); + string id; lock (_lock) { int guidIndex = 0; - id = guidIndex + "-" + guid; + id = guidIndex + "-" + guidString; while (_gamepadsIds.Contains(id)) { - id = (++guidIndex) + "-" + guid; + id = (++guidIndex) + "-" + guidString; } } diff --git a/src/Ryujinx/Common/LocaleManager.cs b/src/Ryujinx/Common/LocaleManager.cs index 9307532e7..e6648fd7e 100644 --- a/src/Ryujinx/Common/LocaleManager.cs +++ b/src/Ryujinx/Common/LocaleManager.cs @@ -154,7 +154,7 @@ namespace Ryujinx.Ava.Common.Locale { Dictionary localeStrings = new(); - _localeData ??= EmbeddedResources.ReadAllText("Ryujinx/Assets/locales.json") + _localeData ??= EmbeddedResources.ReadAllText("Ryujinx/Assets/Locale.json") .Into(it => JsonHelper.Deserialize(it, LocalesJsonContext.Default.LocalesJson)); foreach (LocalesEntry locale in _localeData.Value.Locales) diff --git a/src/Ryujinx/Headless/Options.cs b/src/Ryujinx/Headless/Options.cs index 8305cd311..27df69e5b 100644 --- a/src/Ryujinx/Headless/Options.cs +++ b/src/Ryujinx/Headless/Options.cs @@ -150,7 +150,10 @@ namespace Ryujinx.Headless if (NeedsOverride(nameof(IgnoreControllerApplet))) IgnoreControllerApplet = configurationState.System.IgnoreControllerApplet; - + + if (NeedsOverride(nameof(SkipUserProfilesManager))) + SkipUserProfilesManager = configurationState.System.SkipUserProfilesManager; + return; bool NeedsOverride(string argKey) => originalArgs.None(arg => arg.TrimStart('-').EqualsIgnoreCase(OptionName(argKey))); @@ -414,6 +417,9 @@ namespace Ryujinx.Headless [Option("ignore-controller-applet", Required = false, Default = false, HelpText = "Enable ignoring the controller applet when your game loses connection to your controller.")] public bool IgnoreControllerApplet { get; set; } + [Option("skip-user-profiles-manager", Required = false, Default = false, HelpText = "Enable skips the Profiles Manager popup during gameplay. Select the desired profile before starting the game")] + public bool SkipUserProfilesManager { get; set; } + // Values [Value(0, MetaName = "input", HelpText = "Input to load.", Required = true)] diff --git a/src/Ryujinx/Ryujinx.csproj b/src/Ryujinx/Ryujinx.csproj index db97c9b68..afd09a4d5 100644 --- a/src/Ryujinx/Ryujinx.csproj +++ b/src/Ryujinx/Ryujinx.csproj @@ -154,7 +154,9 @@ Assets\RyujinxGameCompatibility.csv - + + Assets\Locale.json + @@ -173,6 +175,6 @@ - + diff --git a/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs index 470749674..c5bbe3da8 100644 --- a/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs @@ -15,7 +15,7 @@ namespace Ryujinx.Ava.Systems.Configuration /// /// The current version of the file format /// - public const int CurrentVersion = 68; + public const int CurrentVersion = 69; /// /// Version of the configuration file format @@ -187,6 +187,11 @@ namespace Ryujinx.Ava.Systems.Configuration /// public bool IgnoreApplet { get; set; } + /// + /// Skip user profiles manager dialog during gameplay(the used profile in the configuration will be selected) + /// + public bool SkipUserProfiles { get; set; } + /// /// Enables or disables save window size, position and state on close. /// diff --git a/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs index 20c4c6414..f7bc22913 100644 --- a/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs @@ -103,6 +103,7 @@ namespace Ryujinx.Ava.Systems.Configuration System.DramSize.Value = cff.DramSize; System.IgnoreMissingServices.Value = cff.IgnoreMissingServices; System.IgnoreControllerApplet.Value = cff.IgnoreApplet; + System.SkipUserProfilesManager.Value = cff.SkipUserProfiles; System.UseHypervisor.Value = cff.UseHypervisor; UI.GuiColumns.FavColumn.Value = shouldLoadFromFile ? cff.GuiColumns.FavColumn : UI.GuiColumns.FavColumn.Value; @@ -459,7 +460,8 @@ namespace Ryujinx.Ava.Systems.Configuration TurboMode = Key.Unbound, TurboModeWhileHeld = false }; - }) + }), + (69, static cff => cff.SkipUserProfiles = false) ); } } diff --git a/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs index 205054474..3c5fac1cb 100644 --- a/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs @@ -395,6 +395,11 @@ namespace Ryujinx.Ava.Systems.Configuration /// public ReactiveObject IgnoreControllerApplet { get; private set; } + /// + /// Skip User Profiles Manager + /// + public ReactiveObject SkipUserProfilesManager { get; private set; } + /// /// Uses Hypervisor over JIT if available /// @@ -445,6 +450,8 @@ namespace Ryujinx.Ava.Systems.Configuration IgnoreMissingServices.LogChangesToValue(nameof(IgnoreMissingServices)); IgnoreControllerApplet = new ReactiveObject(); IgnoreControllerApplet.LogChangesToValue(nameof(IgnoreControllerApplet)); + SkipUserProfilesManager = new ReactiveObject(); + SkipUserProfilesManager.LogChangesToValue(nameof(SkipUserProfilesManager)); AudioVolume = new ReactiveObject(); AudioVolume.LogChangesToValue(nameof(AudioVolume)); UseHypervisor = new ReactiveObject(); diff --git a/src/Ryujinx/Systems/Configuration/ConfigurationState.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.cs index 33e19f3b6..211bd2cbc 100644 --- a/src/Ryujinx/Systems/Configuration/ConfigurationState.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.cs @@ -82,6 +82,7 @@ namespace Ryujinx.Ava.Systems.Configuration DramSize = System.DramSize, IgnoreMissingServices = System.IgnoreMissingServices, IgnoreApplet = System.IgnoreControllerApplet, + SkipUserProfiles = System.SkipUserProfilesManager, UseHypervisor = System.UseHypervisor, GuiColumns = new GuiColumns { @@ -206,6 +207,7 @@ namespace Ryujinx.Ava.Systems.Configuration System.DramSize.Value = MemoryConfiguration.MemoryConfiguration4GiB; System.IgnoreMissingServices.Value = false; System.IgnoreControllerApplet.Value = false; + System.SkipUserProfilesManager.Value = false; System.UseHypervisor.Value = true; Multiplayer.LanInterfaceId.Value = "0"; Multiplayer.Mode.Value = MultiplayerMode.Disabled; diff --git a/src/Ryujinx/UI/Applet/ProfileSelectorDialog.axaml.cs b/src/Ryujinx/UI/Applet/ProfileSelectorDialog.axaml.cs index babd8e5ee..606a865a1 100644 --- a/src/Ryujinx/UI/Applet/ProfileSelectorDialog.axaml.cs +++ b/src/Ryujinx/UI/Applet/ProfileSelectorDialog.axaml.cs @@ -3,6 +3,7 @@ using Avalonia.Controls; using Avalonia.Input; using FluentAvalonia.UI.Controls; using Ryujinx.Ava.Common.Locale; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; @@ -78,6 +79,13 @@ namespace Ryujinx.Ava.UI.Applet public static async Task<(UserId Id, bool Result)> ShowInputDialog(ProfileSelectorDialogViewModel viewModel) { + + if (ConfigurationState.Instance.System.SkipUserProfilesManager) + { + UserId defaultId = viewModel.SelectedUserId; + return (defaultId, true); + } + ContentDialog contentDialog = new() { Title = LocaleManager.Instance[LocaleKeys.UserProfileWindowTitle], diff --git a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs index 0be6ab3fe..9b540088b 100644 --- a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs @@ -133,6 +133,7 @@ namespace Ryujinx.Ava.UI.ViewModels public bool EnableDiscordIntegration { get; set; } public bool ShowConfirmExit { get; set; } public bool IgnoreApplet { get; set; } + public bool SkipUserProfiles { get; set; } public bool RememberWindowState { get; set; } public bool ShowOldUI { get; set; } public int HideCursor { get; set; } @@ -606,6 +607,7 @@ namespace Ryujinx.Ava.UI.ViewModels DramSize = config.System.DramSize; IgnoreMissingServices = config.System.IgnoreMissingServices; IgnoreApplet = config.System.IgnoreControllerApplet; + SkipUserProfiles = config.System.SkipUserProfilesManager; // CPU EnablePptc = config.System.EnablePtc; @@ -709,6 +711,7 @@ namespace Ryujinx.Ava.UI.ViewModels config.System.DramSize.Value = DramSize; config.System.IgnoreMissingServices.Value = IgnoreMissingServices; config.System.IgnoreControllerApplet.Value = IgnoreApplet; + config.System.SkipUserProfilesManager.Value = SkipUserProfiles; // CPU config.System.EnablePtc.Value = EnablePptc; diff --git a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs index e47adc575..5534ab8e7 100644 --- a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs +++ b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs @@ -76,7 +76,7 @@ namespace Ryujinx.Ava.UI.Views.Main private static IEnumerable GenerateLanguageMenuItems() { - const string LocalePath = "Ryujinx/Assets/locales.json"; + const string LocalePath = "Ryujinx/Assets/Locale.json"; string languageJson = EmbeddedResources.ReadAllText(LocalePath); diff --git a/src/Ryujinx/UI/Views/Settings/SettingsSystemView.axaml b/src/Ryujinx/UI/Views/Settings/SettingsSystemView.axaml index a52fe5fbe..dbe4433dd 100644 --- a/src/Ryujinx/UI/Views/Settings/SettingsSystemView.axaml +++ b/src/Ryujinx/UI/Views/Settings/SettingsSystemView.axaml @@ -328,6 +328,11 @@ ToolTip.Tip="{ext:Locale SettingsTabSystemEnableCustomVSyncIntervalTooltip}"> + + +