mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-04-21 18:13:14 +02:00
Compare commits
4 commits
d9a8988118
...
ec7935dbd3
Author | SHA1 | Date | |
---|---|---|---|
![]() |
ec7935dbd3 | ||
![]() |
2c8afa7e6e | ||
![]() |
e4d6443af1 | ||
![]() |
7b785925d6 |
14 changed files with 273 additions and 83 deletions
|
@ -4942,7 +4942,7 @@
|
||||||
"sv_SE": "Multiplikator för turboläge:",
|
"sv_SE": "Multiplikator för turboläge:",
|
||||||
"th_TH": "",
|
"th_TH": "",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "",
|
"uk_UA": "Множник Турборежиму:",
|
||||||
"zh_CN": "涡轮模式倍数:",
|
"zh_CN": "涡轮模式倍数:",
|
||||||
"zh_TW": ""
|
"zh_TW": ""
|
||||||
}
|
}
|
||||||
|
@ -4967,7 +4967,7 @@
|
||||||
"sv_SE": "Målvärdet för multiplikatorn i turboläget. \n\nLämna den på 200 om du är osäker.",
|
"sv_SE": "Målvärdet för multiplikatorn i turboläget. \n\nLämna den på 200 om du är osäker.",
|
||||||
"th_TH": "",
|
"th_TH": "",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "",
|
"uk_UA": "Цільове значення коефіцієнта Турборежиму.\n\nЗалиште 200, якщо не впевнені",
|
||||||
"zh_CN": "涡轮模式倍数的目标值。\n\n如果不确定请保留为 200。",
|
"zh_CN": "涡轮模式倍数的目标值。\n\n如果不确定请保留为 200。",
|
||||||
"zh_TW": ""
|
"zh_TW": ""
|
||||||
}
|
}
|
||||||
|
@ -4992,7 +4992,7 @@
|
||||||
"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.",
|
"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": "",
|
"th_TH": "",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "",
|
"uk_UA": "Турборежим – це функція емулятора, яка ефективно прискорює або сповільнює гру, якщо та не чутлива до частоти кадрів. Цю функцію можна ввімкнути/вимкнути безпосередньо під час гри за допомогою гарячої клавіші, яку можна налаштувати в меню Гарячі клавіші в налаштуваннях.",
|
||||||
"zh_CN": "涡轮模式是一种模拟器功能当游戏对帧率不敏感时它可以有效地导致加速或降速。\n您可以在游戏中使用热键切换此功能,它可以在 Ryujinx 的键盘热键设置进行设置。\n\n如果不确定则保留为 200。",
|
"zh_CN": "涡轮模式是一种模拟器功能当游戏对帧率不敏感时它可以有效地导致加速或降速。\n您可以在游戏中使用热键切换此功能,它可以在 Ryujinx 的键盘热键设置进行设置。\n\n如果不确定则保留为 200。",
|
||||||
"zh_TW": ""
|
"zh_TW": ""
|
||||||
}
|
}
|
||||||
|
@ -6522,6 +6522,31 @@
|
||||||
"zh_TW": "輸入"
|
"zh_TW": "輸入"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"ID": "SettingsTabInputUseGlobalInput",
|
||||||
|
"Translations": {
|
||||||
|
"ar_SA": "إدخال عالمي",
|
||||||
|
"de_DE": "Globale Eingabe",
|
||||||
|
"el_GR": "Παγκόσμια εισαγωγή",
|
||||||
|
"en_US": "Global Input",
|
||||||
|
"es_ES": "Entrada Global",
|
||||||
|
"fr_FR": "Saisie Globale",
|
||||||
|
"he_IL": "קלט גלובלי",
|
||||||
|
"it_IT": "Input Globale",
|
||||||
|
"ja_JP": "グローバル入力",
|
||||||
|
"ko_KR": "글로벌 입력",
|
||||||
|
"no_NO": "Global Inndata",
|
||||||
|
"pl_PL": "Globalny Wpis",
|
||||||
|
"pt_BR": "Entrada Global",
|
||||||
|
"ru_RU": "Глобальный Ввод",
|
||||||
|
"sv_SE": "Global Input",
|
||||||
|
"th_TH": "การป้อนข้อมูลแบบโกลบอล",
|
||||||
|
"tr_TR": "Küresel Girdi",
|
||||||
|
"uk_UA": "Глобальний Ввід",
|
||||||
|
"zh_CN": "全局输入",
|
||||||
|
"zh_TW": "全域輸入"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"ID": "SettingsTabInputEnableDockedMode",
|
"ID": "SettingsTabInputEnableDockedMode",
|
||||||
"Translations": {
|
"Translations": {
|
||||||
|
@ -8667,7 +8692,7 @@
|
||||||
"sv_SE": "Färg",
|
"sv_SE": "Färg",
|
||||||
"th_TH": "",
|
"th_TH": "",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "",
|
"uk_UA": "Колір",
|
||||||
"zh_CN": "颜色",
|
"zh_CN": "颜色",
|
||||||
"zh_TW": "顏色"
|
"zh_TW": "顏色"
|
||||||
}
|
}
|
||||||
|
@ -8742,7 +8767,7 @@
|
||||||
"sv_SE": "Okänd",
|
"sv_SE": "Okänd",
|
||||||
"th_TH": "ไม่รู้จัก",
|
"th_TH": "ไม่รู้จัก",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "Невідома",
|
"uk_UA": "Назначити",
|
||||||
"zh_CN": "未知",
|
"zh_CN": "未知",
|
||||||
"zh_TW": "未知"
|
"zh_TW": "未知"
|
||||||
}
|
}
|
||||||
|
@ -16272,6 +16297,31 @@
|
||||||
"zh_TW": "瀏覽自訂 GUI 佈景主題"
|
"zh_TW": "瀏覽自訂 GUI 佈景主題"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"ID": "UseGlobalInputTooltip",
|
||||||
|
"Translations": {
|
||||||
|
"ar_SA": "",
|
||||||
|
"de_DE": "",
|
||||||
|
"el_GR": "",
|
||||||
|
"en_US": "If this option is enabled in custom settings, the global input configuration will be used.\n\nIn the global settings: you can enable or disable it as needed; this setting will be inherited by any new custom configurations created.",
|
||||||
|
"es_ES": "",
|
||||||
|
"fr_FR": "",
|
||||||
|
"he_IL": "",
|
||||||
|
"it_IT": "",
|
||||||
|
"ja_JP": "",
|
||||||
|
"ko_KR": "",
|
||||||
|
"no_NO": "",
|
||||||
|
"pl_PL": "",
|
||||||
|
"pt_BR": "",
|
||||||
|
"ru_RU": "Если эта опция включена в пользовательских настройках, будет использована глобальная конфигурация ввода.\n\nВ глобальных настройках: переключите эту опцию по своему усмотрению, это будет унаследовано для вновь созданых пользовательских конфигураций",
|
||||||
|
"sv_SE": "",
|
||||||
|
"th_TH": "",
|
||||||
|
"tr_TR": "",
|
||||||
|
"uk_UA": "",
|
||||||
|
"zh_CN": "",
|
||||||
|
"zh_TW": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"ID": "DockModeToggleTooltip",
|
"ID": "DockModeToggleTooltip",
|
||||||
"Translations": {
|
"Translations": {
|
||||||
|
@ -18067,7 +18117,7 @@
|
||||||
"sv_SE": "Processor",
|
"sv_SE": "Processor",
|
||||||
"th_TH": "ซีพียู",
|
"th_TH": "ซีพียู",
|
||||||
"tr_TR": "İşlemci",
|
"tr_TR": "İşlemci",
|
||||||
"uk_UA": "ЦП",
|
"uk_UA": "Процесор",
|
||||||
"zh_CN": "",
|
"zh_CN": "",
|
||||||
"zh_TW": ""
|
"zh_TW": ""
|
||||||
}
|
}
|
||||||
|
@ -18167,7 +18217,7 @@
|
||||||
"sv_SE": "CPU-cache",
|
"sv_SE": "CPU-cache",
|
||||||
"th_TH": "แคชซีพียู",
|
"th_TH": "แคชซีพียู",
|
||||||
"tr_TR": "İşlemci Belleği",
|
"tr_TR": "İşlemci Belleği",
|
||||||
"uk_UA": "Кеш CPU",
|
"uk_UA": "Кеш процесора (CPU Cache)",
|
||||||
"zh_CN": "CPU 缓存",
|
"zh_CN": "CPU 缓存",
|
||||||
"zh_TW": "CPU 快取"
|
"zh_TW": "CPU 快取"
|
||||||
}
|
}
|
||||||
|
@ -18192,7 +18242,7 @@
|
||||||
"sv_SE": "CPU-läge",
|
"sv_SE": "CPU-läge",
|
||||||
"th_TH": "โหมดซีพียู",
|
"th_TH": "โหมดซีพียู",
|
||||||
"tr_TR": "CPU Hafızası",
|
"tr_TR": "CPU Hafızası",
|
||||||
"uk_UA": "Режим CPU",
|
"uk_UA": "Режим процесора (CPU Mode)",
|
||||||
"zh_CN": "CPU 模式",
|
"zh_CN": "CPU 模式",
|
||||||
"zh_TW": "CPU 模式"
|
"zh_TW": "CPU 模式"
|
||||||
}
|
}
|
||||||
|
@ -18217,7 +18267,7 @@
|
||||||
"sv_SE": "Uppdateringar inaktiverade!",
|
"sv_SE": "Uppdateringar inaktiverade!",
|
||||||
"th_TH": "ปิดใช้งานการอัปเดตแล้ว!",
|
"th_TH": "ปิดใช้งานการอัปเดตแล้ว!",
|
||||||
"tr_TR": "Güncelleyici Devre Dışı!",
|
"tr_TR": "Güncelleyici Devre Dışı!",
|
||||||
"uk_UA": "Програму оновлення вимкнено!",
|
"uk_UA": "Оновлення вимкнено!",
|
||||||
"zh_CN": "已禁用更新!",
|
"zh_CN": "已禁用更新!",
|
||||||
"zh_TW": "更新已停用!"
|
"zh_TW": "更新已停用!"
|
||||||
}
|
}
|
||||||
|
@ -18267,7 +18317,7 @@
|
||||||
"sv_SE": "{0} bilder/s ({1}ms), Turbo ({2}%)",
|
"sv_SE": "{0} bilder/s ({1}ms), Turbo ({2}%)",
|
||||||
"th_TH": "",
|
"th_TH": "",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "",
|
"uk_UA": "{0} FPS ({1}ms), Турбо ({2}%)",
|
||||||
"zh_CN": "{0} FPS ({1}ms), 涡轮 ({2}%)",
|
"zh_CN": "{0} FPS ({1}ms), 涡轮 ({2}%)",
|
||||||
"zh_TW": ""
|
"zh_TW": ""
|
||||||
}
|
}
|
||||||
|
@ -19914,7 +19964,7 @@
|
||||||
"pl_PL": "Skróty Klawiszowe Klawiatury",
|
"pl_PL": "Skróty Klawiszowe Klawiatury",
|
||||||
"pt_BR": "Atalhos do Teclado",
|
"pt_BR": "Atalhos do Teclado",
|
||||||
"ru_RU": "Горячие клавиши",
|
"ru_RU": "Горячие клавиши",
|
||||||
"sv_SE": "Snabbtangenter",
|
"sv_SE": "Snabbtangenter för tangentbord",
|
||||||
"th_TH": "ปุ่มลัดของคีย์บอร์ด",
|
"th_TH": "ปุ่มลัดของคีย์บอร์ด",
|
||||||
"tr_TR": "Klavye Kısayolları",
|
"tr_TR": "Klavye Kısayolları",
|
||||||
"uk_UA": "Гарячі клавіші",
|
"uk_UA": "Гарячі клавіші",
|
||||||
|
@ -21867,7 +21917,7 @@
|
||||||
"sv_SE": "Grafikbakände",
|
"sv_SE": "Grafikbakände",
|
||||||
"th_TH": "กราฟิกเบื้องหลัง",
|
"th_TH": "กราฟิกเบื้องหลัง",
|
||||||
"tr_TR": "Grafik Arka Ucu",
|
"tr_TR": "Grafik Arka Ucu",
|
||||||
"uk_UA": "Графічний сервер",
|
"uk_UA": "Графічний рушій",
|
||||||
"zh_CN": "图形渲染引擎:",
|
"zh_CN": "图形渲染引擎:",
|
||||||
"zh_TW": "圖形後端"
|
"zh_TW": "圖形後端"
|
||||||
}
|
}
|
||||||
|
@ -22042,7 +22092,7 @@
|
||||||
"sv_SE": "Välj grafikkortet som ska användas med Vulkan-grafikbakänden.\n\nPåverkar inte GPU:n som OpenGL använder.\n\nStäll in till den GPU som flaggats som \"dGPU\" om osäker. Om det inte finns någon, lämna orörd.",
|
"sv_SE": "Välj grafikkortet som ska användas med Vulkan-grafikbakänden.\n\nPåverkar inte GPU:n som OpenGL använder.\n\nStäll in till den GPU som flaggats som \"dGPU\" om osäker. Om det inte finns någon, lämna orörd.",
|
||||||
"th_TH": "เลือกการ์ดจอที่จะใช้กับแบ็กเอนด์กราฟิก Vulkan\n\nไม่ส่งผลต่อ GPU ที่ OpenGL จะใช้\n\nตั้งค่าเป็น GPU ที่ถูกตั้งค่าสถานะเป็น \"dGPU\" ถ้าหากคุณไม่แน่ใจ ,หากไม่มีก็ปล่อยทิ้งไว้โดยไม่ต้องแตะต้องมัน",
|
"th_TH": "เลือกการ์ดจอที่จะใช้กับแบ็กเอนด์กราฟิก Vulkan\n\nไม่ส่งผลต่อ GPU ที่ OpenGL จะใช้\n\nตั้งค่าเป็น GPU ที่ถูกตั้งค่าสถานะเป็น \"dGPU\" ถ้าหากคุณไม่แน่ใจ ,หากไม่มีก็ปล่อยทิ้งไว้โดยไม่ต้องแตะต้องมัน",
|
||||||
"tr_TR": "Vulkan Grafik Arka Ucu ile kullanılacak Ekran Kartını Seçin.\n\nOpenGL'nin kullanacağı GPU'yu etkilemez.\n\n Emin değilseniz \"dGPU\" olarak işaretlenmiş GPU'ya ayarlayın. Eğer yoksa, dokunmadan bırakın.\n",
|
"tr_TR": "Vulkan Grafik Arka Ucu ile kullanılacak Ekran Kartını Seçin.\n\nOpenGL'nin kullanacağı GPU'yu etkilemez.\n\n Emin değilseniz \"dGPU\" olarak işaretlenmiş GPU'ya ayarlayın. Eğer yoksa, dokunmadan bırakın.\n",
|
||||||
"uk_UA": "Виберіть відеокарту, яка використовуватиметься з графічним сервером Vulkan.\n\nНе впливає на графічний процесор, який використовуватиме OpenGL.\n\nВстановіть графічний процесор, позначений як «dGPU», якщо не впевнені. Якщо такого немає, не чіпайте.",
|
"uk_UA": "Виберіть відеокарту, яка використовуватиметься з графічним рушієм Vulkan.\n\nНалаштування не впливає на відеоадаптер (GPU), що використовуватиме рушій OpenGL.\n\nВстановіть графічний рушій, позначений як «dGPU», якщо не впевнені. Якщо такого пункту немає, то залиште як є.",
|
||||||
"zh_CN": "选择 Vulkan 图形引擎使用的 GPU。\n\n此选项不会影响 OpenGL 使用的 GPU。\n\n如果不确定,建议选择\"独立显卡(dGPU)\"。如果没有独立显卡,则无需改动此选项。",
|
"zh_CN": "选择 Vulkan 图形引擎使用的 GPU。\n\n此选项不会影响 OpenGL 使用的 GPU。\n\n如果不确定,建议选择\"独立显卡(dGPU)\"。如果没有独立显卡,则无需改动此选项。",
|
||||||
"zh_TW": "選擇將與 Vulkan 圖形後端一起使用的顯示卡。\n\n不會影響 OpenGL 將使用的 GPU。\n\n如果不確定,請設定為標記為「dGPU」的 GPU。如果沒有,則保持原狀。"
|
"zh_TW": "選擇將與 Vulkan 圖形後端一起使用的顯示卡。\n\n不會影響 OpenGL 將使用的 GPU。\n\n如果不確定,請設定為標記為「dGPU」的 GPU。如果沒有,則保持原狀。"
|
||||||
}
|
}
|
||||||
|
@ -22642,7 +22692,7 @@
|
||||||
"sv_SE": "Tillämpar anti-aliasing på spelrenderaren.\n\nFXAA kommer att sudda det mesta av bilden, medan SMAA kommer att försöka hitta taggiga kanter och släta ut dem.\n\nRekommenderas inte att använda tillsammans med skalfiltret FSR.\n\nDet här alternativet kan ändras medan ett spel körs genom att klicka på \"Tillämpa\" nedan. Du kan helt enkelt flytta inställningsfönstret åt sidan och experimentera tills du hittar ditt föredragna utseende för ett spel.\n\nLämna som INGEN om du är osäker.",
|
"sv_SE": "Tillämpar anti-aliasing på spelrenderaren.\n\nFXAA kommer att sudda det mesta av bilden, medan SMAA kommer att försöka hitta taggiga kanter och släta ut dem.\n\nRekommenderas inte att använda tillsammans med skalfiltret FSR.\n\nDet här alternativet kan ändras medan ett spel körs genom att klicka på \"Tillämpa\" nedan. Du kan helt enkelt flytta inställningsfönstret åt sidan och experimentera tills du hittar ditt föredragna utseende för ett spel.\n\nLämna som INGEN om du är osäker.",
|
||||||
"th_TH": "ใช้การลดรอยหยักกับการเรนเดอร์เกม\n\nFXAA จะเบลอภาพส่วนใหญ่ ในขณะที่ SMAA จะพยายามค้นหารอยหยักและปรับให้เรียบ\n\nไม่แนะนำให้ใช้ร่วมกับตัวกรองสเกล FSR\n\nตัวเลือกนี้สามารถเปลี่ยนแปลงได้ในขณะที่เกมกำลังทำงานอยู่โดยคลิก \"นำไปใช้\" ด้านล่าง คุณสามารถย้ายหน้าต่างการตั้งค่าไปด้านข้างและทดลองจนกว่าคุณจะพบรูปลักษณ์ที่คุณต้องการสำหรับเกม\n\nปล่อยไว้ที่ NONE หากไม่แน่ใจ",
|
"th_TH": "ใช้การลดรอยหยักกับการเรนเดอร์เกม\n\nFXAA จะเบลอภาพส่วนใหญ่ ในขณะที่ SMAA จะพยายามค้นหารอยหยักและปรับให้เรียบ\n\nไม่แนะนำให้ใช้ร่วมกับตัวกรองสเกล FSR\n\nตัวเลือกนี้สามารถเปลี่ยนแปลงได้ในขณะที่เกมกำลังทำงานอยู่โดยคลิก \"นำไปใช้\" ด้านล่าง คุณสามารถย้ายหน้าต่างการตั้งค่าไปด้านข้างและทดลองจนกว่าคุณจะพบรูปลักษณ์ที่คุณต้องการสำหรับเกม\n\nปล่อยไว้ที่ NONE หากไม่แน่ใจ",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "Застосовує згладження до рендера гри.\n\nFXAA розмиє більшість зображення, а SMAA спробує знайти нерівні краї та згладити їх.\n\nНе рекомендується використовувати разом з фільтром масштабування FSR.\n\nЦю опцію можна міняти коли гра запущена кліком на \"Застосувати; ви можете відсунути вікно налаштувань і поекспериментувати з видом гри.\n\nЗалиште \"Немає\", якщо не впевнені.",
|
"uk_UA": "Вмикає згладжування.\n\nFXAA розмиє краї зображення, тоді як SMAA спробує згладити їх. FXAA (продуктивність) вимагає менше обчислювальних ресурсів, ніж SMAA (якість).\n\nНе рекомендується використовувати разом з фільтром масштабування FSR.\n\nЦю опцію можна міняти під час гри натисканням \"Застосувати\" в цьому вікні; щоб знайти найкращий варіант, просто відсуньте вікно налаштувань і поекспериментуйте.\n\nЗалиште \"Немає\", якщо не впевнені.",
|
||||||
"zh_CN": "抗锯齿是一种图形处理技术,用于减少图像边缘的锯齿状现象,使图像更加平滑。\n\nFXAA(快速近似抗锯齿)是一种性能开销相对较小的抗锯齿方法,但可能会使得整体图像看起来有些模糊。\n\nSMAA(增强型子像素抗锯齿)则更加精细,它会尝试找到锯齿边缘并平滑它们,相比 FXAA 有更好的图像质量,但性能开销可能会稍大一些。\n\n如果开启了 FSR(FidelityFX Super Resolution,超级分辨率锐画技术)来提高性能或图像质量,不建议再启用抗锯齿,因为它们会产生不必要的图形处理开销,或者相互之间效果不协调。\n\n在游戏运行时,通过点击下面的“应用”按钮可以使设置生效;你可以将设置窗口移开,并试验找到您喜欢的游戏画面效果。\n\n如果不确定,请保持为“无”。",
|
"zh_CN": "抗锯齿是一种图形处理技术,用于减少图像边缘的锯齿状现象,使图像更加平滑。\n\nFXAA(快速近似抗锯齿)是一种性能开销相对较小的抗锯齿方法,但可能会使得整体图像看起来有些模糊。\n\nSMAA(增强型子像素抗锯齿)则更加精细,它会尝试找到锯齿边缘并平滑它们,相比 FXAA 有更好的图像质量,但性能开销可能会稍大一些。\n\n如果开启了 FSR(FidelityFX Super Resolution,超级分辨率锐画技术)来提高性能或图像质量,不建议再启用抗锯齿,因为它们会产生不必要的图形处理开销,或者相互之间效果不协调。\n\n在游戏运行时,通过点击下面的“应用”按钮可以使设置生效;你可以将设置窗口移开,并试验找到您喜欢的游戏画面效果。\n\n如果不确定,请保持为“无”。",
|
||||||
"zh_TW": "對遊戲繪製進行反鋸齒處理。\n\nFXAA 會模糊大部分圖像,而 SMAA 則會嘗試找出鋸齒邊緣並將其平滑化。\n\n不建議與 FSR 縮放濾鏡一起使用。\n\n此選項可在遊戲執行時透過點選下方的「套用」進行變更;您只需將設定視窗移到一旁,然後進行試驗,直到找到您喜歡的遊戲效果。\n\n如果不確定,請選擇無狀態。"
|
"zh_TW": "對遊戲繪製進行反鋸齒處理。\n\nFXAA 會模糊大部分圖像,而 SMAA 則會嘗試找出鋸齒邊緣並將其平滑化。\n\n不建議與 FSR 縮放濾鏡一起使用。\n\n此選項可在遊戲執行時透過點選下方的「套用」進行變更;您只需將設定視窗移到一旁,然後進行試驗,直到找到您喜歡的遊戲效果。\n\n如果不確定,請選擇無狀態。"
|
||||||
}
|
}
|
||||||
|
@ -22717,7 +22767,7 @@
|
||||||
"sv_SE": "Välj det skalfilter som ska tillämpas vid användning av upplösningsskala.\n\nBilinjär fungerar bra för 3D-spel och är ett säkert standardalternativ.\n\nNärmast rekommenderas för pixel art-spel.\n\nFSR 1.0 är bara ett skarpningsfilter, rekommenderas inte för FXAA eller SMAA.\n\nOmrådesskalning rekommenderas vid nedskalning av upplösning som är större än utdatafönstret. Det kan användas för att uppnå en supersamplad anti-alias-effekt vid nedskalning med mer än 2x.\n\nDetta alternativ kan ändras medan ett spel körs genom att klicka på \"Tillämpa\" nedan. du kan helt enkelt flytta inställningsfönstret åt sidan och experimentera tills du hittar ditt föredragna utseende för ett spel.\n\nLämna som BILINJÄR om du är osäker.",
|
"sv_SE": "Välj det skalfilter som ska tillämpas vid användning av upplösningsskala.\n\nBilinjär fungerar bra för 3D-spel och är ett säkert standardalternativ.\n\nNärmast rekommenderas för pixel art-spel.\n\nFSR 1.0 är bara ett skarpningsfilter, rekommenderas inte för FXAA eller SMAA.\n\nOmrådesskalning rekommenderas vid nedskalning av upplösning som är större än utdatafönstret. Det kan användas för att uppnå en supersamplad anti-alias-effekt vid nedskalning med mer än 2x.\n\nDetta alternativ kan ändras medan ett spel körs genom att klicka på \"Tillämpa\" nedan. du kan helt enkelt flytta inställningsfönstret åt sidan och experimentera tills du hittar ditt föredragna utseende för ett spel.\n\nLämna som BILINJÄR om du är osäker.",
|
||||||
"th_TH": "เลือกตัวกรองสเกลที่จะใช้เมื่อใช้สเกลความละเอียด\n\nBilinear ทำงานได้ดีกับเกม 3D และเป็นตัวเลือกเริ่มต้นที่ปลอดภัย\n\nแนะนำให้ใช้เกมภาพพิกเซลที่ใกล้เคียงที่สุด\n\nFSR 1.0 เป็นเพียงตัวกรองความคมชัด ไม่แนะนำให้ใช้กับ FXAA หรือ SMAA\n\nตัวเลือกนี้สามารถเปลี่ยนแปลงได้ในขณะที่เกมกำลังทำงานอยู่โดยคลิก \"นำไปใช้\" ด้านล่าง คุณสามารถย้ายหน้าต่างการตั้งค่าไปด้านข้างและทดลองจนกว่าคุณจะพบรูปลักษณ์ที่คุณต้องการสำหรับเกม",
|
"th_TH": "เลือกตัวกรองสเกลที่จะใช้เมื่อใช้สเกลความละเอียด\n\nBilinear ทำงานได้ดีกับเกม 3D และเป็นตัวเลือกเริ่มต้นที่ปลอดภัย\n\nแนะนำให้ใช้เกมภาพพิกเซลที่ใกล้เคียงที่สุด\n\nFSR 1.0 เป็นเพียงตัวกรองความคมชัด ไม่แนะนำให้ใช้กับ FXAA หรือ SMAA\n\nตัวเลือกนี้สามารถเปลี่ยนแปลงได้ในขณะที่เกมกำลังทำงานอยู่โดยคลิก \"นำไปใช้\" ด้านล่าง คุณสามารถย้ายหน้าต่างการตั้งค่าไปด้านข้างและทดลองจนกว่าคุณจะพบรูปลักษณ์ที่คุณต้องการสำหรับเกม",
|
||||||
"tr_TR": "Choose the scaling filter that will be applied when using resolution scale.\n\nBilinear works well for 3D games and is a safe default option.\n\nNearest is recommended for pixel art games.\n\nFSR 1.0 is merely a sharpening filter, not recommended for use with FXAA or SMAA.\n\nThis option can be changed while a game is running by clicking \"Apply\" below; you can simply move the settings window aside and experiment until you find your preferred look for a game.\n\nLeave on BILINEAR if unsure.",
|
"tr_TR": "Choose the scaling filter that will be applied when using resolution scale.\n\nBilinear works well for 3D games and is a safe default option.\n\nNearest is recommended for pixel art games.\n\nFSR 1.0 is merely a sharpening filter, not recommended for use with FXAA or SMAA.\n\nThis option can be changed while a game is running by clicking \"Apply\" below; you can simply move the settings window aside and experiment until you find your preferred look for a game.\n\nLeave on BILINEAR if unsure.",
|
||||||
"uk_UA": "Виберіть фільтр масштабування, що використається при збільшенні роздільної здатності.\n\n\"Білінійний\" добре виглядає в 3D іграх, і хороше налаштування за умовчуванням.\n\n\"Найближчий\" рекомендується для ігор з піксель-артом.\n\n\"FSR 1.0\" - фільтр різкості. Не варто використовувати разом з FXAA або SMAA.\n\nЦю опцію можна змінювати під час гри кліком на \"Застосувати\" нижче; ви можете відсунути вікно налаштувань і поекспериментувати з тим, як відображатиметься гра.\n\nЗалиште \"Білінійний\", якщо не впевнені.",
|
"uk_UA": "Оберіть фільтр масштабування, який буде використовуватися при збільшенні роздільної здатності.\n\n\"Білінійний\" добре виглядає в 3D іграх, і хороше налаштування за умовчуванням.\n\n\"Найближчий\" рекомендується для ігор з піксель-артом.\n\n\"FSR 1.0\" - фільтр різкості. Не варто використовувати разом з FXAA або SMAA.\n\nЦю опцію можна міняти під час гри натисканням \"Застосувати\" в цьому вікні; щоб знайти найкращий варіант, просто відсуньте вікно налаштувань і поекспериментуйте.\n\nЗалиште \"Білінійний\", якщо не впевнені.",
|
||||||
"zh_CN": "选择在分辨率缩放时将使用的缩放过滤器。\n\nBilinear(双线性过滤)对于3D游戏效果较好,是一个安全的默认选项。\n\nNearest(最近邻过滤)推荐用于像素艺术游戏。\n\nFSR(超级分辨率锐画)只是一个锐化过滤器,不推荐与 FXAA 或 SMAA 抗锯齿一起使用。\n\nArea(局部过滤),当渲染分辨率大于窗口实际分辨率,推荐该选项。该选项在渲染比例大于2.0的情况下,可以实现超采样的效果。\n\n在游戏运行时,通过点击下面的“应用”按钮可以使设置生效;你可以将设置窗口移开,并试验找到您喜欢的游戏画面效果。\n\n如果不确定,请保持为“Bilinear(双线性过滤)”。",
|
"zh_CN": "选择在分辨率缩放时将使用的缩放过滤器。\n\nBilinear(双线性过滤)对于3D游戏效果较好,是一个安全的默认选项。\n\nNearest(最近邻过滤)推荐用于像素艺术游戏。\n\nFSR(超级分辨率锐画)只是一个锐化过滤器,不推荐与 FXAA 或 SMAA 抗锯齿一起使用。\n\nArea(局部过滤),当渲染分辨率大于窗口实际分辨率,推荐该选项。该选项在渲染比例大于2.0的情况下,可以实现超采样的效果。\n\n在游戏运行时,通过点击下面的“应用”按钮可以使设置生效;你可以将设置窗口移开,并试验找到您喜欢的游戏画面效果。\n\n如果不确定,请保持为“Bilinear(双线性过滤)”。",
|
||||||
"zh_TW": "選擇使用解析度縮放時套用的縮放過濾器。\n\n雙線性 (Bilinear) 濾鏡適用於 3D 遊戲,是一個安全的預設選項。\n\n建議像素美術遊戲使用近鄰性 (Nearest) 濾鏡。\n\nFSR 1.0 只是一個銳化濾鏡,不建議與 FXAA 或 SMAA 一起使用。\n\n此選項可在遊戲執行時透過點選下方的「套用」進行變更;您只需將設定視窗移到一旁,然後進行試驗,直到找到您喜歡的遊戲效果。\n\n如果不確定,請保持雙線性 (Bilinear) 狀態。"
|
"zh_TW": "選擇使用解析度縮放時套用的縮放過濾器。\n\n雙線性 (Bilinear) 濾鏡適用於 3D 遊戲,是一個安全的預設選項。\n\n建議像素美術遊戲使用近鄰性 (Nearest) 濾鏡。\n\nFSR 1.0 只是一個銳化濾鏡,不建議與 FXAA 或 SMAA 一起使用。\n\n此選項可在遊戲執行時透過點選下方的「套用」進行變更;您只需將設定視窗移到一旁,然後進行試驗,直到找到您喜歡的遊戲效果。\n\n如果不確定,請保持雙線性 (Bilinear) 狀態。"
|
||||||
}
|
}
|
||||||
|
@ -22817,7 +22867,7 @@
|
||||||
"sv_SE": "Yta",
|
"sv_SE": "Yta",
|
||||||
"th_TH": "",
|
"th_TH": "",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "",
|
"uk_UA": "Зональна",
|
||||||
"zh_CN": "Area(区域过滤)",
|
"zh_CN": "Area(区域过滤)",
|
||||||
"zh_TW": "區域"
|
"zh_TW": "區域"
|
||||||
}
|
}
|
||||||
|
@ -23767,7 +23817,7 @@
|
||||||
"sv_SE": "Emulerad vertikal synk. 'Switch' emulerar Switchens uppdateringsfrekvens på 60Hz. 'Obunden' är en obegränsad uppdateringsfrekvens. 'Anpassad uppdateringsfrekvens' emulerar den angivna anpassade uppdateringsfrekvensen.",
|
"sv_SE": "Emulerad vertikal synk. 'Switch' emulerar Switchens uppdateringsfrekvens på 60Hz. 'Obunden' är en obegränsad uppdateringsfrekvens. 'Anpassad uppdateringsfrekvens' emulerar den angivna anpassade uppdateringsfrekvensen.",
|
||||||
"th_TH": "",
|
"th_TH": "",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "Емульована вертикальна синхронізація кадрів. 'Switch' емулює частоту оновлення консолі Nintendo Switch (60 Гц). 'Необмежена' — частота оновлення не матиме обмежень. 'Користувацька' емулює вказану користувацьку частоту оновлення.",
|
"uk_UA": "Емульована вертикальна синхронізація кадрів. 'Switch' емулює частоту оновлення консолі Nintendo Switch (60 Гц). 'Необмежена' — частота оновлення не матиме обмежень. 'Користувацька' емулює вказану користувачем частоту оновлення.",
|
||||||
"zh_CN": "模拟垂直同步。“Switch”模拟了 Switch 的 60Hz 刷新率。“无限制”没有刷新率限制。“自定义刷新率”模拟指定的自定义刷新率。",
|
"zh_CN": "模拟垂直同步。“Switch”模拟了 Switch 的 60Hz 刷新率。“无限制”没有刷新率限制。“自定义刷新率”模拟指定的自定义刷新率。",
|
||||||
"zh_TW": "模擬垂直同步。「Switch」 模擬 Nintendo Switch 的 60Hz 重新整理頻率。「沒有限制」是沒有限制的重新整理頻率。「自訂的重新整理頻率」模擬所自訂的重新整理頻率。"
|
"zh_TW": "模擬垂直同步。「Switch」 模擬 Nintendo Switch 的 60Hz 重新整理頻率。「沒有限制」是沒有限制的重新整理頻率。「自訂的重新整理頻率」模擬所自訂的重新整理頻率。"
|
||||||
}
|
}
|
||||||
|
@ -24017,7 +24067,7 @@
|
||||||
"sv_SE": "Turboläge:",
|
"sv_SE": "Turboläge:",
|
||||||
"th_TH": "",
|
"th_TH": "",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "",
|
"uk_UA": "Турбомод:",
|
||||||
"zh_CN": "涡轮模式: ",
|
"zh_CN": "涡轮模式: ",
|
||||||
"zh_TW": ""
|
"zh_TW": ""
|
||||||
}
|
}
|
||||||
|
@ -24042,7 +24092,7 @@
|
||||||
"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.",
|
"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": "",
|
"th_TH": "",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "",
|
"uk_UA": "Гаряча клавіша Турборежиму.\nКонфігурація поведінки турборежиму в налаштуваннях Процесору Ryujinx.\n\nНе прив'язуйте, якщо не впевнені.",
|
||||||
"zh_CN": "涡轮模式热键。\n可以在 Ryujinx CPU 设置中配置涡轮模式的行为。\n\n如果不确定请保留为未绑定。",
|
"zh_CN": "涡轮模式热键。\n可以在 Ryujinx CPU 设置中配置涡轮模式的行为。\n\n如果不确定请保留为未绑定。",
|
||||||
"zh_TW": ""
|
"zh_TW": ""
|
||||||
}
|
}
|
||||||
|
@ -24067,7 +24117,7 @@
|
||||||
"sv_SE": "Endast när du trycker ner",
|
"sv_SE": "Endast när du trycker ner",
|
||||||
"th_TH": "",
|
"th_TH": "",
|
||||||
"tr_TR": "",
|
"tr_TR": "",
|
||||||
"uk_UA": "",
|
"uk_UA": "Тільки під час натискання",
|
||||||
"zh_CN": "仅在按下时",
|
"zh_CN": "仅在按下时",
|
||||||
"zh_TW": ""
|
"zh_TW": ""
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Silk.NET.Vulkan;
|
||||||
|
|
||||||
namespace Ryujinx.Ava
|
namespace Ryujinx.Ava
|
||||||
{
|
{
|
||||||
|
@ -35,6 +36,7 @@ namespace Ryujinx.Ava
|
||||||
public static string Version { get; private set; }
|
public static string Version { get; private set; }
|
||||||
public static string ConfigurationPath { get; private set; }
|
public static string ConfigurationPath { get; private set; }
|
||||||
public static string GlobalConfigurationPath { get; private set; }
|
public static string GlobalConfigurationPath { get; private set; }
|
||||||
|
public static bool UseExtraConfig{ get; private set; }
|
||||||
public static bool PreviewerDetached { get; private set; }
|
public static bool PreviewerDetached { get; private set; }
|
||||||
public static bool UseHardwareAcceleration { get; private set; }
|
public static bool UseHardwareAcceleration { get; private set; }
|
||||||
public static string BackendThreadingArg { get; private set; }
|
public static string BackendThreadingArg { get; private set; }
|
||||||
|
@ -160,6 +162,7 @@ namespace Ryujinx.Ava
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static string GetDirGameUserConfig(string gameId, bool rememberGlobalDir = false, bool changeFolderForGame = false)
|
public static string GetDirGameUserConfig(string gameId, bool rememberGlobalDir = false, bool changeFolderForGame = false)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(gameId))
|
if (string.IsNullOrEmpty(gameId))
|
||||||
|
@ -169,24 +172,22 @@ namespace Ryujinx.Ava
|
||||||
|
|
||||||
string gameDir = Path.Combine(AppDataManager.GamesDirPath, gameId, ReleaseInformation.ConfigName);
|
string gameDir = Path.Combine(AppDataManager.GamesDirPath, gameId, ReleaseInformation.ConfigName);
|
||||||
|
|
||||||
// Should load with the game if there is a custom setting for the game
|
|
||||||
if (rememberGlobalDir)
|
|
||||||
{
|
|
||||||
GlobalConfigurationPath = ConfigurationPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (changeFolderForGame)
|
if (changeFolderForGame)
|
||||||
{
|
{
|
||||||
ConfigurationPath = gameDir;
|
ConfigurationPath = gameDir;
|
||||||
|
UseExtraConfig = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return gameDir;
|
return gameDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ReloadConfig()
|
public static void SetUseExtraConfig(bool value)
|
||||||
|
{
|
||||||
|
UseExtraConfig = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ReloadConfig(bool rememberGlobalDir = false)
|
||||||
{
|
{
|
||||||
//It is necessary that when a user setting appears, the global setting remains available
|
|
||||||
GlobalConfigurationPath = null;
|
|
||||||
|
|
||||||
string localConfigurationPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ReleaseInformation.ConfigName);
|
string localConfigurationPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ReleaseInformation.ConfigName);
|
||||||
string appDataConfigurationPath = Path.Combine(AppDataManager.BaseDirPath, ReleaseInformation.ConfigName);
|
string appDataConfigurationPath = Path.Combine(AppDataManager.BaseDirPath, ReleaseInformation.ConfigName);
|
||||||
|
@ -227,6 +228,12 @@ namespace Ryujinx.Ava
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// When you first load the program, copy to remember the path for the global configuration
|
||||||
|
if (GlobalConfigurationPath == null)
|
||||||
|
{
|
||||||
|
GlobalConfigurationPath = ConfigurationPath;
|
||||||
|
}
|
||||||
|
|
||||||
UseHardwareAcceleration = ConfigurationState.Instance.EnableHardwareAcceleration;
|
UseHardwareAcceleration = ConfigurationState.Instance.EnableHardwareAcceleration;
|
||||||
|
|
||||||
// Check if graphics backend was overridden
|
// Check if graphics backend was overridden
|
||||||
|
|
|
@ -461,7 +461,15 @@ namespace Ryujinx.Ava.Systems
|
||||||
|
|
||||||
DisplaySleep.Prevent();
|
DisplaySleep.Prevent();
|
||||||
|
|
||||||
NpadManager.Initialize(Device, ConfigurationState.Instance.Hid.InputConfig, ConfigurationState.Instance.Hid.EnableKeyboard, ConfigurationState.Instance.Hid.EnableMouse);
|
if (ConfigurationState.Instance.System.UseInputGlobalConfig.Value && Program.UseExtraConfig)
|
||||||
|
{
|
||||||
|
NpadManager.Initialize(Device, ConfigurationState.InstanceExtra.Hid.InputConfig, ConfigurationState.Instance.Hid.EnableKeyboard, ConfigurationState.Instance.Hid.EnableMouse);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NpadManager.Initialize(Device, ConfigurationState.Instance.Hid.InputConfig, ConfigurationState.Instance.Hid.EnableKeyboard, ConfigurationState.Instance.Hid.EnableMouse);
|
||||||
|
}
|
||||||
|
|
||||||
TouchScreenManager.Initialize(Device);
|
TouchScreenManager.Initialize(Device);
|
||||||
|
|
||||||
_viewModel.IsGameRunning = true;
|
_viewModel.IsGameRunning = true;
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The current version of the file format
|
/// The current version of the file format
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const int CurrentVersion = 69;
|
public const int CurrentVersion = 70;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Version of the configuration file format
|
/// Version of the configuration file format
|
||||||
|
@ -152,6 +152,11 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool MatchSystemTime { get; set; }
|
public bool MatchSystemTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enable or disable use global input config (Independent from controllers binding)
|
||||||
|
/// </summary>
|
||||||
|
public bool UseInputGlobalConfig { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Enables or disables Docked Mode
|
/// Enables or disables Docked Mode
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -90,6 +90,7 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
System.TimeZone.Value = cff.SystemTimeZone;
|
System.TimeZone.Value = cff.SystemTimeZone;
|
||||||
System.SystemTimeOffset.Value = shouldLoadFromFile ? cff.SystemTimeOffset : System.SystemTimeOffset.Value; // Get from global config only
|
System.SystemTimeOffset.Value = shouldLoadFromFile ? cff.SystemTimeOffset : System.SystemTimeOffset.Value; // Get from global config only
|
||||||
System.MatchSystemTime.Value = shouldLoadFromFile ? cff.MatchSystemTime : System.MatchSystemTime.Value; // Get from global config only
|
System.MatchSystemTime.Value = shouldLoadFromFile ? cff.MatchSystemTime : System.MatchSystemTime.Value; // Get from global config only
|
||||||
|
System.UseInputGlobalConfig.Value = cff.UseInputGlobalConfig;
|
||||||
System.EnableDockedMode.Value = cff.DockedMode;
|
System.EnableDockedMode.Value = cff.DockedMode;
|
||||||
System.EnablePtc.Value = cff.EnablePtc;
|
System.EnablePtc.Value = cff.EnablePtc;
|
||||||
System.EnableLowPowerPtc.Value = cff.EnableLowPowerPtc;
|
System.EnableLowPowerPtc.Value = cff.EnableLowPowerPtc;
|
||||||
|
@ -147,7 +148,7 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
Hid.EnableMouse.Value = cff.EnableMouse;
|
Hid.EnableMouse.Value = cff.EnableMouse;
|
||||||
Hid.DisableInputWhenOutOfFocus.Value = shouldLoadFromFile ? cff.DisableInputWhenOutOfFocus: Hid.DisableInputWhenOutOfFocus.Value; // Get from global config only
|
Hid.DisableInputWhenOutOfFocus.Value = shouldLoadFromFile ? cff.DisableInputWhenOutOfFocus: Hid.DisableInputWhenOutOfFocus.Value; // Get from global config only
|
||||||
Hid.Hotkeys.Value = shouldLoadFromFile ? cff.Hotkeys : Hid.Hotkeys.Value; // Get from global config only
|
Hid.Hotkeys.Value = shouldLoadFromFile ? cff.Hotkeys : Hid.Hotkeys.Value; // Get from global config only
|
||||||
Hid.InputConfig.Value = cff.InputConfig ?? [];
|
Hid.InputConfig.Value = cff.InputConfig ?? [] ;
|
||||||
Hid.RainbowSpeed.Value = cff.RainbowSpeed;
|
Hid.RainbowSpeed.Value = cff.RainbowSpeed;
|
||||||
|
|
||||||
Multiplayer.LanInterfaceId.Value = cff.MultiplayerLanInterfaceId;
|
Multiplayer.LanInterfaceId.Value = cff.MultiplayerLanInterfaceId;
|
||||||
|
|
|
@ -326,6 +326,12 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ReactiveObject<bool> MatchSystemTime { get; private set; }
|
public ReactiveObject<bool> MatchSystemTime { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enable or disable use global input config (Independent from controllers binding)
|
||||||
|
/// </summary>
|
||||||
|
public ReactiveObject<bool> UseInputGlobalConfig { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Enables or disables Docked Mode
|
/// Enables or disables Docked Mode
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -417,6 +423,8 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
SystemTimeOffset.LogChangesToValue(nameof(SystemTimeOffset));
|
SystemTimeOffset.LogChangesToValue(nameof(SystemTimeOffset));
|
||||||
MatchSystemTime = new ReactiveObject<bool>();
|
MatchSystemTime = new ReactiveObject<bool>();
|
||||||
MatchSystemTime.LogChangesToValue(nameof(MatchSystemTime));
|
MatchSystemTime.LogChangesToValue(nameof(MatchSystemTime));
|
||||||
|
UseInputGlobalConfig = new ReactiveObject<bool>();
|
||||||
|
UseInputGlobalConfig.LogChangesToValue(nameof(UseInputGlobalConfig));
|
||||||
EnableDockedMode = new ReactiveObject<bool>();
|
EnableDockedMode = new ReactiveObject<bool>();
|
||||||
EnableDockedMode.LogChangesToValue(nameof(EnableDockedMode));
|
EnableDockedMode.LogChangesToValue(nameof(EnableDockedMode));
|
||||||
EnablePtc = new ReactiveObject<bool>();
|
EnablePtc = new ReactiveObject<bool>();
|
||||||
|
@ -490,6 +498,7 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
/// TODO: Implement a ReactiveList class.
|
/// TODO: Implement a ReactiveList class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ReactiveObject<List<InputConfig>> InputConfig { get; private set; }
|
public ReactiveObject<List<InputConfig>> InputConfig { get; private set; }
|
||||||
|
public ReactiveObject<List<InputConfig>> UseInputGlobalConfig { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The speed of spectrum cycling for the Rainbow LED feature.
|
/// The speed of spectrum cycling for the Rainbow LED feature.
|
||||||
|
@ -503,6 +512,7 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
DisableInputWhenOutOfFocus = new ReactiveObject<bool>();
|
DisableInputWhenOutOfFocus = new ReactiveObject<bool>();
|
||||||
Hotkeys = new ReactiveObject<KeyboardHotkeys>();
|
Hotkeys = new ReactiveObject<KeyboardHotkeys>();
|
||||||
InputConfig = new ReactiveObject<List<InputConfig>>();
|
InputConfig = new ReactiveObject<List<InputConfig>>();
|
||||||
|
UseInputGlobalConfig = new ReactiveObject<List<InputConfig>>();
|
||||||
RainbowSpeed = new ReactiveObject<float>();
|
RainbowSpeed = new ReactiveObject<float>();
|
||||||
RainbowSpeed.Event += (_, args) => Rainbow.Speed = args.NewValue;
|
RainbowSpeed.Event += (_, args) => Rainbow.Speed = args.NewValue;
|
||||||
}
|
}
|
||||||
|
@ -761,6 +771,8 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static ConfigurationState Instance { get; private set; }
|
public static ConfigurationState Instance { get; private set; }
|
||||||
|
|
||||||
|
public static ConfigurationState InstanceExtra{ get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The UI section
|
/// The UI section
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -15,12 +15,13 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
{
|
{
|
||||||
public static void Initialize()
|
public static void Initialize()
|
||||||
{
|
{
|
||||||
if (Instance != null)
|
if (Instance != null || InstanceExtra!= null)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException("Configuration is already initialized");
|
throw new InvalidOperationException("Configuration is already initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
Instance = new ConfigurationState();
|
Instance = new ConfigurationState();
|
||||||
|
InstanceExtra= new ConfigurationState();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigurationFileFormat ToFileFormat()
|
public ConfigurationFileFormat ToFileFormat()
|
||||||
|
@ -54,6 +55,7 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
SystemTimeZone = System.TimeZone,
|
SystemTimeZone = System.TimeZone,
|
||||||
SystemTimeOffset = System.SystemTimeOffset,
|
SystemTimeOffset = System.SystemTimeOffset,
|
||||||
MatchSystemTime = System.MatchSystemTime,
|
MatchSystemTime = System.MatchSystemTime,
|
||||||
|
UseInputGlobalConfig = System.UseInputGlobalConfig,
|
||||||
DockedMode = System.EnableDockedMode,
|
DockedMode = System.EnableDockedMode,
|
||||||
EnableDiscordIntegration = EnableDiscordIntegration,
|
EnableDiscordIntegration = EnableDiscordIntegration,
|
||||||
UpdateCheckerType = UpdateCheckerType,
|
UpdateCheckerType = UpdateCheckerType,
|
||||||
|
@ -178,6 +180,7 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
System.Region.Value = Region.USA;
|
System.Region.Value = Region.USA;
|
||||||
System.TimeZone.Value = "UTC";
|
System.TimeZone.Value = "UTC";
|
||||||
System.SystemTimeOffset.Value = 0;
|
System.SystemTimeOffset.Value = 0;
|
||||||
|
System.UseInputGlobalConfig.Value = false;
|
||||||
System.EnableDockedMode.Value = true;
|
System.EnableDockedMode.Value = true;
|
||||||
EnableDiscordIntegration.Value = true;
|
EnableDiscordIntegration.Value = true;
|
||||||
UpdateCheckerType.Value = UpdaterType.PromptAtStartup;
|
UpdateCheckerType.Value = UpdaterType.PromptAtStartup;
|
||||||
|
|
|
@ -82,6 +82,10 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
public AvaloniaList<string> ProfilesList { get; set; }
|
public AvaloniaList<string> ProfilesList { get; set; }
|
||||||
public AvaloniaList<string> DeviceList { get; set; }
|
public AvaloniaList<string> DeviceList { get; set; }
|
||||||
|
|
||||||
|
public bool _useExtraConfig;
|
||||||
|
|
||||||
|
public bool _useGlobalInput;
|
||||||
|
|
||||||
// XAML Flags
|
// XAML Flags
|
||||||
public bool ShowSettings => _device > 0;
|
public bool ShowSettings => _device > 0;
|
||||||
public bool IsController => _device > 1;
|
public bool IsController => _device > 1;
|
||||||
|
@ -255,12 +259,14 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
|
|
||||||
public InputConfig Config { get; set; }
|
public InputConfig Config { get; set; }
|
||||||
|
|
||||||
public InputViewModel(UserControl owner) : this()
|
public InputViewModel(UserControl owner, bool UseGlobalInput = false) : this()
|
||||||
{
|
{
|
||||||
if (Program.PreviewerDetached)
|
if (Program.PreviewerDetached)
|
||||||
{
|
{
|
||||||
_mainWindow = RyujinxApp.MainWindow;
|
_mainWindow = RyujinxApp.MainWindow;
|
||||||
|
|
||||||
|
_useExtraConfig = Program.UseExtraConfig;
|
||||||
|
|
||||||
AvaloniaKeyboardDriver = new AvaloniaKeyboardDriver(owner);
|
AvaloniaKeyboardDriver = new AvaloniaKeyboardDriver(owner);
|
||||||
|
|
||||||
_mainWindow.InputManager.GamepadDriver.OnGamepadConnected += HandleOnGamepadConnected;
|
_mainWindow.InputManager.GamepadDriver.OnGamepadConnected += HandleOnGamepadConnected;
|
||||||
|
@ -268,6 +274,8 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
|
|
||||||
_mainWindow.ViewModel.AppHost?.NpadManager.BlockInputUpdates();
|
_mainWindow.ViewModel.AppHost?.NpadManager.BlockInputUpdates();
|
||||||
|
|
||||||
|
_useGlobalInput = UseGlobalInput;
|
||||||
|
|
||||||
_isLoaded = false;
|
_isLoaded = false;
|
||||||
|
|
||||||
LoadDevices();
|
LoadDevices();
|
||||||
|
@ -298,9 +306,18 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
PlayerIndexes.Add(new(PlayerIndex.Handheld, LocaleManager.Instance[LocaleKeys.ControllerSettingsHandheld]));
|
PlayerIndexes.Add(new(PlayerIndex.Handheld, LocaleManager.Instance[LocaleKeys.ControllerSettingsHandheld]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void LoadConfiguration(InputConfig inputConfig = null)
|
private void LoadConfiguration(InputConfig inputConfig = null)
|
||||||
{
|
{
|
||||||
Config = inputConfig ?? ConfigurationState.Instance.Hid.InputConfig.Value.FirstOrDefault(inputConfig => inputConfig.PlayerIndex == _playerId);
|
if (_useGlobalInput && _useExtraConfig)
|
||||||
|
{
|
||||||
|
Config = inputConfig ?? ConfigurationState.InstanceExtra.Hid.InputConfig.Value.FirstOrDefault(inputConfig => inputConfig.PlayerIndex == _playerId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Config = inputConfig ?? ConfigurationState.Instance.Hid.InputConfig.Value.FirstOrDefault(inputConfig => inputConfig.PlayerIndex == _playerId);
|
||||||
|
}
|
||||||
|
|
||||||
if (Config is StandardKeyboardInputConfig keyboardInputConfig)
|
if (Config is StandardKeyboardInputConfig keyboardInputConfig)
|
||||||
{
|
{
|
||||||
|
@ -834,7 +851,14 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
|
|
||||||
List<InputConfig> newConfig = [];
|
List<InputConfig> newConfig = [];
|
||||||
|
|
||||||
newConfig.AddRange(ConfigurationState.Instance.Hid.InputConfig.Value);
|
if (_useGlobalInput && _useExtraConfig)
|
||||||
|
{
|
||||||
|
newConfig.AddRange(ConfigurationState.InstanceExtra.Hid.InputConfig.Value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newConfig.AddRange(ConfigurationState.Instance.Hid.InputConfig.Value);
|
||||||
|
}
|
||||||
|
|
||||||
newConfig.Remove(newConfig.FirstOrDefault(x => x == null));
|
newConfig.Remove(newConfig.FirstOrDefault(x => x == null));
|
||||||
|
|
||||||
|
@ -874,13 +898,22 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_mainWindow.ViewModel.AppHost?.NpadManager.ReloadConfiguration(newConfig, ConfigurationState.Instance.Hid.EnableKeyboard, ConfigurationState.Instance.Hid.EnableMouse);
|
|
||||||
|
|
||||||
// Atomically replace and signal input change.
|
// Atomically replace and signal input change.
|
||||||
// NOTE: Do not modify InputConfig.Value directly as other code depends on the on-change event.
|
// NOTE: Do not modify InputConfig.Value directly as other code depends on the on-change event.
|
||||||
ConfigurationState.Instance.Hid.InputConfig.Value = newConfig;
|
_mainWindow.ViewModel.AppHost?.NpadManager.ReloadConfiguration(newConfig, ConfigurationState.Instance.Hid.EnableKeyboard, ConfigurationState.Instance.Hid.EnableMouse);
|
||||||
|
|
||||||
|
if (_useGlobalInput && _useExtraConfig)
|
||||||
|
{
|
||||||
|
// In User Settings when "Use Global Input" is enabled, it saves global input to global setting
|
||||||
|
ConfigurationState.InstanceExtra.Hid.InputConfig.Value = newConfig;
|
||||||
|
ConfigurationState.InstanceExtra.ToFileFormat().SaveConfig(Program.GlobalConfigurationPath);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ConfigurationState.Instance.Hid.InputConfig.Value = newConfig;
|
||||||
|
ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
|
||||||
|
}
|
||||||
|
|
||||||
ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void NotifyChange(string property)
|
public void NotifyChange(string property)
|
||||||
|
|
|
@ -1565,6 +1565,13 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
{
|
{
|
||||||
// Loads the user configuration, having previously changed the global configuration to the user configuration
|
// Loads the user configuration, having previously changed the global configuration to the user configuration
|
||||||
ConfigurationState.Instance.Load(configurationFileFormat, Program.GetDirGameUserConfig(idGame, true, true), idGame);
|
ConfigurationState.Instance.Load(configurationFileFormat, Program.GetDirGameUserConfig(idGame, true, true), idGame);
|
||||||
|
|
||||||
|
if (ConfigurationFileFormat.TryLoad(Program.GlobalConfigurationPath, out ConfigurationFileFormat configurationFileFormatExtra))
|
||||||
|
{
|
||||||
|
//This is where the global configuration will be stored.
|
||||||
|
//This allows you to change the global configuration settings during the game (for example, the global input setting)
|
||||||
|
ConfigurationState.InstanceExtra.Load(configurationFileFormatExtra, Program.GlobalConfigurationPath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Code where conditions will be executed after loading user configuration
|
// Code where conditions will be executed after loading user configuration
|
||||||
|
|
|
@ -53,6 +53,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
[ObservableProperty] private bool _isVulkanAvailable = true;
|
[ObservableProperty] private bool _isVulkanAvailable = true;
|
||||||
[ObservableProperty] private bool _gameListNeedsRefresh;
|
[ObservableProperty] private bool _gameListNeedsRefresh;
|
||||||
private readonly List<string> _gpuIds = [];
|
private readonly List<string> _gpuIds = [];
|
||||||
|
public bool _useInputGlobalConfig;
|
||||||
private int _graphicsBackendIndex;
|
private int _graphicsBackendIndex;
|
||||||
private int _scalingFilter;
|
private int _scalingFilter;
|
||||||
private int _scalingFilterLevel;
|
private int _scalingFilterLevel;
|
||||||
|
@ -64,6 +65,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
public event Action CloseWindow;
|
public event Action CloseWindow;
|
||||||
public event Action SaveSettingsEvent;
|
public event Action SaveSettingsEvent;
|
||||||
|
public event Action<bool> LocalGlobalInputSwitchEvent;
|
||||||
private int _networkInterfaceIndex;
|
private int _networkInterfaceIndex;
|
||||||
private int _multiplayerModeIndex;
|
private int _multiplayerModeIndex;
|
||||||
private string _ldnPassphrase;
|
private string _ldnPassphrase;
|
||||||
|
@ -84,6 +86,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
public bool IsGameTitleNotNull => !string.IsNullOrEmpty(GameTitle);
|
public bool IsGameTitleNotNull => !string.IsNullOrEmpty(GameTitle);
|
||||||
public double PanelOpacity => IsGameTitleNotNull ? 0.5 : 1;
|
public double PanelOpacity => IsGameTitleNotNull ? 0.5 : 1;
|
||||||
|
|
||||||
|
|
||||||
public int ResolutionScale
|
public int ResolutionScale
|
||||||
{
|
{
|
||||||
get => _resolutionScale;
|
get => _resolutionScale;
|
||||||
|
@ -142,9 +145,22 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
public bool EnableKeyboard { get; set; }
|
public bool EnableKeyboard { get; set; }
|
||||||
public bool EnableMouse { get; set; }
|
public bool EnableMouse { get; set; }
|
||||||
public bool DisableInputWhenOutOfFocus { get; set; }
|
public bool DisableInputWhenOutOfFocus { get; set; }
|
||||||
|
|
||||||
public int FocusLostActionType { get; set; }
|
public int FocusLostActionType { get; set; }
|
||||||
|
|
||||||
|
public bool EnableConfigGlobal
|
||||||
|
{
|
||||||
|
get => _useInputGlobalConfig;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_useInputGlobalConfig = value;
|
||||||
|
LocalGlobalInputSwitchEvent?.Invoke(_useInputGlobalConfig);
|
||||||
|
OnPropertyChanged(nameof(PanelOpacityInput));
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public double PanelOpacityInput => EnableConfigGlobal ? 0.5 : 1;
|
||||||
|
|
||||||
public VSyncMode VSyncMode
|
public VSyncMode VSyncMode
|
||||||
{
|
{
|
||||||
get => _vSyncMode;
|
get => _vSyncMode;
|
||||||
|
@ -411,7 +427,16 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
if (enableToLoadCustomConfig) // During the game. If there is no user config, then load the global config window
|
if (enableToLoadCustomConfig) // During the game. If there is no user config, then load the global config window
|
||||||
{
|
{
|
||||||
string gameDir = Program.GetDirGameUserConfig(gameId, false, true);
|
string gameDir = Program.GetDirGameUserConfig(gameId, true, true);
|
||||||
|
|
||||||
|
Program.SetUseExtraConfig(true);
|
||||||
|
|
||||||
|
if (ConfigurationFileFormat.TryLoad(Program.GlobalConfigurationPath, out ConfigurationFileFormat configurationFileFormatExtra))
|
||||||
|
{
|
||||||
|
// Extra load global configuration for input setting and save global input setting with other global config
|
||||||
|
ConfigurationState.InstanceExtra.Load(configurationFileFormatExtra, Program.GlobalConfigurationPath);
|
||||||
|
}
|
||||||
|
|
||||||
if (ConfigurationFileFormat.TryLoad(gameDir, out ConfigurationFileFormat configurationFileFormat))
|
if (ConfigurationFileFormat.TryLoad(gameDir, out ConfigurationFileFormat configurationFileFormat))
|
||||||
{
|
{
|
||||||
ConfigurationState.Instance.Load(configurationFileFormat, gameDir, gameId);
|
ConfigurationState.Instance.Load(configurationFileFormat, gameDir, gameId);
|
||||||
|
@ -551,9 +576,9 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadCurrentConfiguration()
|
public void LoadCurrentConfiguration(bool global = false)
|
||||||
{
|
{
|
||||||
ConfigurationState config = ConfigurationState.Instance;
|
ConfigurationState config = global ? ConfigurationState.InstanceExtra: ConfigurationState.Instance;
|
||||||
|
|
||||||
// User Interface
|
// User Interface
|
||||||
EnableDiscordIntegration = config.EnableDiscordIntegration;
|
EnableDiscordIntegration = config.EnableDiscordIntegration;
|
||||||
|
@ -579,6 +604,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
};
|
};
|
||||||
|
|
||||||
// Input
|
// Input
|
||||||
|
EnableConfigGlobal = config.System.UseInputGlobalConfig;
|
||||||
EnableDockedMode = config.System.EnableDockedMode;
|
EnableDockedMode = config.System.EnableDockedMode;
|
||||||
EnableKeyboard = config.Hid.EnableKeyboard;
|
EnableKeyboard = config.Hid.EnableKeyboard;
|
||||||
EnableMouse = config.Hid.EnableMouse;
|
EnableMouse = config.Hid.EnableMouse;
|
||||||
|
@ -661,9 +687,9 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
LdnServer = config.Multiplayer.LdnServer;
|
LdnServer = config.Multiplayer.LdnServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveSettings()
|
public void SaveSettings(bool global = false)
|
||||||
{
|
{
|
||||||
ConfigurationState config = ConfigurationState.Instance;
|
ConfigurationState config = global ? ConfigurationState.InstanceExtra: ConfigurationState.Instance;
|
||||||
|
|
||||||
// User Interface
|
// User Interface
|
||||||
config.EnableDiscordIntegration.Value = EnableDiscordIntegration;
|
config.EnableDiscordIntegration.Value = EnableDiscordIntegration;
|
||||||
|
@ -685,6 +711,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
};
|
};
|
||||||
|
|
||||||
// Input
|
// Input
|
||||||
|
config.System.UseInputGlobalConfig.Value = EnableConfigGlobal;
|
||||||
config.System.EnableDockedMode.Value = EnableDockedMode;
|
config.System.EnableDockedMode.Value = EnableDockedMode;
|
||||||
config.Hid.EnableKeyboard.Value = EnableKeyboard;
|
config.Hid.EnableKeyboard.Value = EnableKeyboard;
|
||||||
config.Hid.EnableMouse.Value = EnableMouse;
|
config.Hid.EnableMouse.Value = EnableMouse;
|
||||||
|
@ -797,11 +824,14 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
private static void RevertIfNotSaved()
|
private static void RevertIfNotSaved()
|
||||||
{
|
{
|
||||||
// maybe this is an unnecessary check(all options need to be tested)
|
/*
|
||||||
|
maybe this is an unnecessary check(all options need to be tested)
|
||||||
if (string.IsNullOrEmpty(Program.GlobalConfigurationPath))
|
if (string.IsNullOrEmpty(Program.GlobalConfigurationPath))
|
||||||
{
|
{
|
||||||
Program.ReloadConfig();
|
Program.ReloadConfig();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
Program.ReloadConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ApplyButton()
|
public void ApplyButton()
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Ryujinx.Ava.Common.Locale;
|
using Ryujinx.Ava.Common.Locale;
|
||||||
|
using Ryujinx.Ava.Systems.Configuration;
|
||||||
using Ryujinx.Ava.UI.Controls;
|
using Ryujinx.Ava.UI.Controls;
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
using Ryujinx.Ava.UI.Helpers;
|
||||||
using Ryujinx.Ava.UI.Models;
|
using Ryujinx.Ava.UI.Models;
|
||||||
|
@ -13,7 +14,7 @@ namespace Ryujinx.Ava.UI.Views.Input
|
||||||
|
|
||||||
public InputView()
|
public InputView()
|
||||||
{
|
{
|
||||||
ViewModel = new InputViewModel(this);
|
ViewModel = new InputViewModel(this, ConfigurationState.Instance.System.UseInputGlobalConfig.Value);
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
@ -23,6 +24,14 @@ namespace Ryujinx.Ava.UI.Views.Input
|
||||||
ViewModel.Save();
|
ViewModel.Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ToggleLocalGlobalInput(bool enableConfigGlobal)
|
||||||
|
{
|
||||||
|
|
||||||
|
Dispose();
|
||||||
|
ViewModel = new InputViewModel(this, enableConfigGlobal); // Create new Input Page with other input configs
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
private async void PlayerIndexBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
|
private async void PlayerIndexBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
{
|
{
|
||||||
if (PlayerIndexBox != null)
|
if (PlayerIndexBox != null)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<UserControl
|
<UserControl
|
||||||
x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsInputView"
|
x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsInputView"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
@ -22,9 +22,16 @@
|
||||||
<Panel
|
<Panel
|
||||||
Margin="10">
|
Margin="10">
|
||||||
<Grid RowDefinitions="Auto,*,Auto">
|
<Grid RowDefinitions="Auto,*,Auto">
|
||||||
<views:InputView
|
<StackPanel>
|
||||||
Grid.Row="0"
|
<!--
|
||||||
Name="InputView" />
|
Opacity="{Binding PanelOpacityInput}">
|
||||||
|
|
||||||
|
IsEnabled="{Binding !EnableConfigGlobal}">
|
||||||
|
-->
|
||||||
|
<views:InputView
|
||||||
|
Grid.Row="0"
|
||||||
|
Name="InputView" />
|
||||||
|
</StackPanel>
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Orientation="Vertical"
|
Orientation="Vertical"
|
||||||
Grid.Row="2">
|
Grid.Row="2">
|
||||||
|
@ -34,6 +41,13 @@
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
Spacing="10">
|
Spacing="10">
|
||||||
|
<CheckBox
|
||||||
|
ToolTip.Tip="{ext:Locale UseGlobalInputTooltip}"
|
||||||
|
MinWidth="0"
|
||||||
|
IsChecked="{Binding EnableConfigGlobal}">
|
||||||
|
<TextBlock
|
||||||
|
Text="{ext:Locale SettingsTabInputUseGlobalInput}" />
|
||||||
|
</CheckBox>
|
||||||
<CheckBox
|
<CheckBox
|
||||||
ToolTip.Tip="{ext:Locale DockModeToggleTooltip}"
|
ToolTip.Tip="{ext:Locale DockModeToggleTooltip}"
|
||||||
MinWidth="0"
|
MinWidth="0"
|
||||||
|
|
|
@ -120,30 +120,34 @@
|
||||||
IconSource="Code" />
|
IconSource="Code" />
|
||||||
</ui:NavigationView.MenuItems>
|
</ui:NavigationView.MenuItems>
|
||||||
</ui:NavigationView>
|
</ui:NavigationView>
|
||||||
|
<Grid Grid.Row="3"
|
||||||
<ReversibleStackPanel
|
ColumnDefinitions="Auto,*,Auto">
|
||||||
Grid.Row="2"
|
<StackPanel Grid.Column="0" Orientation="Horizontal" Margin="10" Spacing="10">
|
||||||
Margin="10"
|
<Button
|
||||||
Spacing="10"
|
IsVisible="{Binding !IsGameRunning}"
|
||||||
Orientation="Horizontal"
|
Content="{ext:Locale UserProfilesDelete}"
|
||||||
HorizontalAlignment="Right"
|
Command="{Binding DeleteConfigGame}"
|
||||||
ReverseOrder="{x:Static helper:RunningPlatform.IsMacOS}">
|
Classes="red"/>
|
||||||
<Button
|
</StackPanel>
|
||||||
Content="{ext:Locale SettingsButtonSave}"
|
<ReversibleStackPanel
|
||||||
Command="{Binding SaveUserConfig}" />
|
Grid.Column="2"
|
||||||
<Button
|
Margin="10"
|
||||||
HotKey="Escape"
|
Spacing="10"
|
||||||
Content="{ext:Locale SettingsButtonClose}"
|
Orientation="Horizontal"
|
||||||
Command="{Binding CancelButton}" />
|
HorizontalAlignment="Right"
|
||||||
<Button
|
ReverseOrder="{x:Static helper:RunningPlatform.IsMacOS}">
|
||||||
IsVisible="{Binding IsGameRunning}"
|
<Button
|
||||||
Content="{ext:Locale SettingsButtonApply}"
|
Classes="accent"
|
||||||
Command="{Binding ApplyButton}" />
|
Content="{ext:Locale SettingsButtonSave}"
|
||||||
<Button
|
Command="{Binding SaveUserConfig}" />
|
||||||
IsVisible="{Binding !IsGameRunning}"
|
<Button
|
||||||
Content="{ext:Locale UserProfilesDelete}"
|
HotKey="Escape"
|
||||||
Command="{Binding DeleteConfigGame}"
|
Content="{ext:Locale SettingsButtonClose}"
|
||||||
Classes="red"/>
|
Command="{Binding CancelButton}" />
|
||||||
</ReversibleStackPanel>
|
<Button
|
||||||
|
Content="{ext:Locale SettingsButtonApply}"
|
||||||
|
Command="{Binding ApplyButton}" />
|
||||||
|
</ReversibleStackPanel>
|
||||||
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</window:StyleableAppWindow>
|
</window:StyleableAppWindow>
|
||||||
|
|
|
@ -29,6 +29,8 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
ViewModel.CloseWindow += Close;
|
ViewModel.CloseWindow += Close;
|
||||||
ViewModel.SaveSettingsEvent += SaveSettings;
|
ViewModel.SaveSettingsEvent += SaveSettings;
|
||||||
|
|
||||||
|
ViewModel.LocalGlobalInputSwitchEvent += ToggleLocalGlobalInput;
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
Load();
|
Load();
|
||||||
}
|
}
|
||||||
|
@ -38,6 +40,10 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
InputPage.InputView?.SaveCurrentProfile();
|
InputPage.InputView?.SaveCurrentProfile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ToggleLocalGlobalInput(bool enableConfigGlobal)
|
||||||
|
{
|
||||||
|
InputPage.InputView?.ToggleLocalGlobalInput(enableConfigGlobal);
|
||||||
|
}
|
||||||
|
|
||||||
private void Load()
|
private void Load()
|
||||||
{
|
{
|
||||||
|
@ -92,6 +98,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
|
|
||||||
protected override void OnClosing(WindowClosingEventArgs e)
|
protected override void OnClosing(WindowClosingEventArgs e)
|
||||||
{
|
{
|
||||||
|
Program.SetUseExtraConfig(false);
|
||||||
InputPage.Dispose(); // You need to unload the gamepad settings, otherwise the controls will be blocked
|
InputPage.Dispose(); // You need to unload the gamepad settings, otherwise the controls will be blocked
|
||||||
base.OnClosing(e);
|
base.OnClosing(e);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue