mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-09-13 13:35:29 +00:00
Compare commits
9 Commits
experiment
...
Canary-1.3
Author | SHA1 | Date | |
---|---|---|---|
|
bc6be4e088 | ||
|
64a6494d90 | ||
|
ddb8afa6f4 | ||
|
c2f4118b1f | ||
|
47aa2c1513 | ||
|
f3a2f59683 | ||
|
51bcb9e128 | ||
|
dce5f0eb55 | ||
|
f2eb3749f9 |
@@ -55,7 +55,6 @@
|
|||||||
<PackageVersion Include="SkiaSharp" Version="2.88.9" />
|
<PackageVersion Include="SkiaSharp" Version="2.88.9" />
|
||||||
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="2.88.9" />
|
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="2.88.9" />
|
||||||
<PackageVersion Include="SPB" Version="0.0.4-build32" />
|
<PackageVersion Include="SPB" Version="0.0.4-build32" />
|
||||||
<PackageVersion Include="Starscript.Net" Version="1.0.36" />
|
|
||||||
<PackageVersion Include="System.IO.Hashing" Version="9.0.2" />
|
<PackageVersion Include="System.IO.Hashing" Version="9.0.2" />
|
||||||
<PackageVersion Include="System.Management" Version="9.0.2" />
|
<PackageVersion Include="System.Management" Version="9.0.2" />
|
||||||
<PackageVersion Include="UnicornEngine.Unicorn" Version="2.0.2-rc1-fb78016" />
|
<PackageVersion Include="UnicornEngine.Unicorn" Version="2.0.2-rc1-fb78016" />
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -188,6 +188,8 @@
|
|||||||
01003DD00BFEE000,"Airheart - Tales of broken Wings",,playable,2021-02-26 15:20:27
|
01003DD00BFEE000,"Airheart - Tales of broken Wings",,playable,2021-02-26 15:20:27
|
||||||
01007F100DE52000,"Akane",nvdec,playable,2022-07-21 00:12:18
|
01007F100DE52000,"Akane",nvdec,playable,2022-07-21 00:12:18
|
||||||
01009A800F0C8000,"Akash: Path of the Five",gpu;nvdec,ingame,2020-12-14 22:33:12
|
01009A800F0C8000,"Akash: Path of the Five",gpu;nvdec,ingame,2020-12-14 22:33:12
|
||||||
|
01009E8012976000,"AKIBA'S TRIP: Hellbound & Debriefed",,playable,2025-07-30 23:22:47
|
||||||
|
0100D74019A0E000,"AKIBA'S TRIP: Undead & Undressed Director's Cut",,playable,2025-07-31 13:58:42
|
||||||
010053100B0EA000,"Akihabara - Feel the Rhythm Remixed",,playable,2021-02-22 14:39:35
|
010053100B0EA000,"Akihabara - Feel the Rhythm Remixed",,playable,2021-02-22 14:39:35
|
||||||
0100D4C00EE0C000,"Akuarium",slow,playable,2020-12-12 23:43:36
|
0100D4C00EE0C000,"Akuarium",slow,playable,2020-12-12 23:43:36
|
||||||
010026E00FEBE000,"Akuto: Showdown",,playable,2020-08-04 19:43:27
|
010026E00FEBE000,"Akuto: Showdown",,playable,2020-08-04 19:43:27
|
||||||
@@ -1095,6 +1097,7 @@
|
|||||||
0100F9600E746000,"ESP Ra.De. Psi",audio;slow,ingame,2024-03-07 15:05:08
|
0100F9600E746000,"ESP Ra.De. Psi",audio;slow,ingame,2024-03-07 15:05:08
|
||||||
010073000FE18000,"Esports powerful pro yakyuu 2020",gpu;crash;Needs More Attention,ingame,2024-04-29 05:34:14
|
010073000FE18000,"Esports powerful pro yakyuu 2020",gpu;crash;Needs More Attention,ingame,2024-04-29 05:34:14
|
||||||
01004F9012FD8000,"Estranged: The Departure",nvdec;UE4,playable,2022-10-24 10:37:58
|
01004F9012FD8000,"Estranged: The Departure",nvdec;UE4,playable,2022-10-24 10:37:58
|
||||||
|
010018f01e0a0000,"Eternights",,playable,2025-07-30 12:10:24
|
||||||
0100CB900B498000,"Eternum Ex",,playable,2021-01-13 20:28:32
|
0100CB900B498000,"Eternum Ex",,playable,2021-01-13 20:28:32
|
||||||
010092501EB2C000,"Europa (Demo)",gpu;crash;UE4,ingame,2024-04-23 10:47:12
|
010092501EB2C000,"Europa (Demo)",gpu;crash;UE4,ingame,2024-04-23 10:47:12
|
||||||
01007BE0160D6000,"EVE ghost enemies",gpu,ingame,2023-01-14 03:13:30
|
01007BE0160D6000,"EVE ghost enemies",gpu,ingame,2023-01-14 03:13:30
|
||||||
@@ -1240,6 +1243,8 @@
|
|||||||
010003F00BD48000,"Friday the 13th: Killer Puzzle",,playable,2021-01-28 01:33:38
|
010003F00BD48000,"Friday the 13th: Killer Puzzle",,playable,2021-01-28 01:33:38
|
||||||
010092A00C4B6000,"Friday the 13th: The Game Ultimate Slasher Edition",nvdec;online-broken;UE4,playable,2022-09-06 17:33:27
|
010092A00C4B6000,"Friday the 13th: The Game Ultimate Slasher Edition",nvdec;online-broken;UE4,playable,2022-09-06 17:33:27
|
||||||
0100F200178F4000,"FRONT MISSION 1st: Remake",,playable,2023-06-09 07:44:24
|
0100F200178F4000,"FRONT MISSION 1st: Remake",,playable,2023-06-09 07:44:24
|
||||||
|
0100c4e018a24000,"FRONT MISSION 2: Remake",,playable,2025-07-30 12:11:23
|
||||||
|
01007E6019872000,"FRONT MISSION 3: Remake",,playable,2025-07-30 12:12:02
|
||||||
0100861012474000,"Frontline Zed",,playable,2020-10-03 12:55:59
|
0100861012474000,"Frontline Zed",,playable,2020-10-03 12:55:59
|
||||||
0100B5300B49A000,"Frost",,playable,2022-07-27 12:00:36
|
0100B5300B49A000,"Frost",,playable,2022-07-27 12:00:36
|
||||||
010038A007AA4000,"FruitFall Crush",,playable,2020-10-20 11:33:33
|
010038A007AA4000,"FruitFall Crush",,playable,2020-10-20 11:33:33
|
||||||
@@ -1518,6 +1523,7 @@
|
|||||||
010095C016C14000,"Iridium",,playable,2022-08-05 23:19:53
|
010095C016C14000,"Iridium",,playable,2022-08-05 23:19:53
|
||||||
0100AD300B786000,"Iris School of Wizardry -Vinculum Hearts-",,playable,2022-12-05 13:11:15
|
0100AD300B786000,"Iris School of Wizardry -Vinculum Hearts-",,playable,2022-12-05 13:11:15
|
||||||
0100945012168000,"Iris.Fall",nvdec,playable,2022-10-18 13:40:22
|
0100945012168000,"Iris.Fall",nvdec,playable,2022-10-18 13:40:22
|
||||||
|
010059801B736000,"IronFall: Invasion",,playable,2025-07-30 11:42:30
|
||||||
01005270118D6000,"Iron Wings",slow,ingame,2022-08-07 08:32:57
|
01005270118D6000,"Iron Wings",slow,ingame,2022-08-07 08:32:57
|
||||||
01004DB003E6A000,"IRONCAST",,playable,2021-01-13 13:54:29
|
01004DB003E6A000,"IRONCAST",,playable,2021-01-13 13:54:29
|
||||||
0100E5700CD56000,"Irony Curtain: From Matryoshka with Love",,playable,2021-06-04 20:12:37
|
0100E5700CD56000,"Irony Curtain: From Matryoshka with Love",,playable,2021-06-04 20:12:37
|
||||||
@@ -2306,6 +2312,7 @@
|
|||||||
010077B00BDD8000,"Professional Farmer: Nintendo Switch™ Edition",slow,playable,2020-12-16 13:38:19
|
010077B00BDD8000,"Professional Farmer: Nintendo Switch™ Edition",slow,playable,2020-12-16 13:38:19
|
||||||
010018300C83A000,"Professor Lupo and his Horrible Pets",,playable,2020-06-12 00:08:45
|
010018300C83A000,"Professor Lupo and his Horrible Pets",,playable,2020-06-12 00:08:45
|
||||||
0100D1F0132F6000,"Professor Lupo: Ocean",,playable,2021-04-14 16:33:33
|
0100D1F0132F6000,"Professor Lupo: Ocean",,playable,2021-04-14 16:33:33
|
||||||
|
0100c3a017834000,"Prodeus",,playable,2025-07-30 12:07:52
|
||||||
0100BBD00976C000,"Project Highrise: Architect's Edition",,playable,2022-08-10 17:19:12
|
0100BBD00976C000,"Project Highrise: Architect's Edition",,playable,2022-08-10 17:19:12
|
||||||
0100ACE00DAB6000,"Project Nimbus: Complete Edition",nvdec;UE4;vulkan-backend-bug,playable,2022-08-10 17:35:43
|
0100ACE00DAB6000,"Project Nimbus: Complete Edition",nvdec;UE4;vulkan-backend-bug,playable,2022-08-10 17:35:43
|
||||||
01002980140F6000,"Project TRIANGLE STRATEGY™ Debut Demo",UE4;demo,playable,2022-10-24 21:40:27
|
01002980140F6000,"Project TRIANGLE STRATEGY™ Debut Demo",UE4;demo,playable,2022-10-24 21:40:27
|
||||||
@@ -2768,7 +2775,7 @@
|
|||||||
0100E6B0115FC000,"Star99",online,menus,2021-11-26 14:18:51
|
0100E6B0115FC000,"Star99",online,menus,2021-11-26 14:18:51
|
||||||
01002100137BA000,"Stardash",,playable,2021-01-21 16:31:19
|
01002100137BA000,"Stardash",,playable,2021-01-21 16:31:19
|
||||||
0100E65002BB8000,"Stardew Valley",online-broken;ldn-untested,playable,2024-02-14 03:11:19
|
0100E65002BB8000,"Stardew Valley",online-broken;ldn-untested,playable,2024-02-14 03:11:19
|
||||||
01002CC003FE6000,"Starlink: Battle for Atlas™ Digital Edition",services-horizon;crash;Needs Update,nothing,2024-05-05 17:25:11
|
01002CC003FE6000,"Starlink: Battle for Atlas™ Digital Edition",,playable,2025-07-30 12:09:37
|
||||||
010098E010FDA000,"Starlit Adventures Golden Stars",,playable,2020-11-21 12:14:43
|
010098E010FDA000,"Starlit Adventures Golden Stars",,playable,2020-11-21 12:14:43
|
||||||
01001BB00AC26000,"STARSHIP AVENGER Operation: Take Back Earth",,playable,2021-01-12 15:52:55
|
01001BB00AC26000,"STARSHIP AVENGER Operation: Take Back Earth",,playable,2021-01-12 15:52:55
|
||||||
010000700A572000,"State of Anarchy: Master of Mayhem",nvdec,playable,2021-01-12 19:00:05
|
010000700A572000,"State of Anarchy: Master of Mayhem",nvdec,playable,2021-01-12 19:00:05
|
||||||
@@ -2976,6 +2983,7 @@
|
|||||||
0100C2E0129A6000,"The Executioner",nvdec,playable,2021-01-23 00:31:28
|
0100C2E0129A6000,"The Executioner",nvdec,playable,2021-01-23 00:31:28
|
||||||
01006050114D4000,"The Experiment: Escape Room",gpu,ingame,2022-09-30 13:20:35
|
01006050114D4000,"The Experiment: Escape Room",gpu,ingame,2022-09-30 13:20:35
|
||||||
0100B5900DFB2000,"The Eyes of Ara",,playable,2022-09-16 14:44:06
|
0100B5900DFB2000,"The Eyes of Ara",,playable,2022-09-16 14:44:06
|
||||||
|
0100BA5013E52000,"The Falconeer: Warrior Edition",,playable,2025-07-30 12:04:50
|
||||||
01002DD00AF9E000,"The Fall",gpu,ingame,2020-05-31 23:31:16
|
01002DD00AF9E000,"The Fall",gpu,ingame,2020-05-31 23:31:16
|
||||||
01003E5002320000,"The Fall Part 2: Unbound",,playable,2021-11-06 02:18:08
|
01003E5002320000,"The Fall Part 2: Unbound",,playable,2021-11-06 02:18:08
|
||||||
0100CDC00789E000,"The Final Station",nvdec,playable,2022-08-22 15:54:39
|
0100CDC00789E000,"The Final Station",nvdec,playable,2022-08-22 15:54:39
|
||||||
@@ -3198,6 +3206,7 @@
|
|||||||
010000400F582000,"TT Isle of Man Ride on the Edge 2",gpu;nvdec;online-broken,ingame,2022-09-30 22:13:05
|
010000400F582000,"TT Isle of Man Ride on the Edge 2",gpu;nvdec;online-broken,ingame,2022-09-30 22:13:05
|
||||||
0100752011628000,"TTV2",,playable,2020-11-27 13:21:36
|
0100752011628000,"TTV2",,playable,2020-11-27 13:21:36
|
||||||
0100AFE00452E000,"Tumblestone",,playable,2021-01-07 17:49:20
|
0100AFE00452E000,"Tumblestone",,playable,2021-01-07 17:49:20
|
||||||
|
0100D1A01D7BA000,"Turbo Overkill",,playable,2025-07-30 12:08:57
|
||||||
010085500D5F6000,"Turok",gpu,ingame,2021-06-04 13:16:24
|
010085500D5F6000,"Turok",gpu,ingame,2021-06-04 13:16:24
|
||||||
0100CDC00D8D6000,"Turok 2: Seeds of Evil",gpu;vulkan,ingame,2022-09-12 17:50:05
|
0100CDC00D8D6000,"Turok 2: Seeds of Evil",gpu;vulkan,ingame,2022-09-12 17:50:05
|
||||||
010004B0130C8000,"Turrican Flashback",audout,playable,2021-08-30 10:07:56
|
010004B0130C8000,"Turrican Flashback",audout,playable,2021-08-30 10:07:56
|
||||||
@@ -3221,6 +3230,8 @@
|
|||||||
0100592005164000,"UNBOX: Newbie's Adventure",UE4,playable,2022-08-29 13:12:56
|
0100592005164000,"UNBOX: Newbie's Adventure",UE4,playable,2022-08-29 13:12:56
|
||||||
01002D900C5E4000,"Uncanny Valley",nvdec,playable,2021-06-04 13:28:45
|
01002D900C5E4000,"Uncanny Valley",nvdec,playable,2021-06-04 13:28:45
|
||||||
010076F011F54000,"Undead & Beyond",nvdec,playable,2022-10-04 09:11:18
|
010076F011F54000,"Undead & Beyond",nvdec,playable,2022-10-04 09:11:18
|
||||||
|
01009B700D0B8000,"Undead Horde",,playable,2025-07-30 12:05:05
|
||||||
|
0100FC301A878000,"Undead Horde 2: Necropolis",,playable,2025-07-30 12:06:07
|
||||||
01008F3013E4E000,"Under Leaves",,playable,2021-05-22 18:13:58
|
01008F3013E4E000,"Under Leaves",,playable,2021-05-22 18:13:58
|
||||||
010080B00AD66000,"Undertale",,playable,2022-08-31 17:31:46
|
010080B00AD66000,"Undertale",,playable,2022-08-31 17:31:46
|
||||||
01008F80049C6000,"Unepic",,playable,2024-01-15 17:03:00
|
01008F80049C6000,"Unepic",,playable,2024-01-15 17:03:00
|
||||||
|
|
@@ -73,7 +73,6 @@
|
|||||||
<PackageReference Include="Silk.NET.Vulkan.Extensions.EXT" />
|
<PackageReference Include="Silk.NET.Vulkan.Extensions.EXT" />
|
||||||
<PackageReference Include="Silk.NET.Vulkan.Extensions.KHR" />
|
<PackageReference Include="Silk.NET.Vulkan.Extensions.KHR" />
|
||||||
<PackageReference Include="SPB" />
|
<PackageReference Include="SPB" />
|
||||||
<PackageReference Include="Starscript.Net"/>
|
|
||||||
<PackageReference Include="SharpZipLib" />
|
<PackageReference Include="SharpZipLib" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@@ -14,7 +14,6 @@ using LibHac.Tools.FsSystem.NcaUtils;
|
|||||||
using Ryujinx.Ava.Common.Models;
|
using Ryujinx.Ava.Common.Models;
|
||||||
using Ryujinx.Ava.Systems.Configuration;
|
using Ryujinx.Ava.Systems.Configuration;
|
||||||
using Ryujinx.Ava.Systems.Configuration.System;
|
using Ryujinx.Ava.Systems.Configuration.System;
|
||||||
using Ryujinx.Ava.Systems.Starscript;
|
|
||||||
using Ryujinx.Ava.Utilities;
|
using Ryujinx.Ava.Utilities;
|
||||||
using Ryujinx.Common;
|
using Ryujinx.Common;
|
||||||
using Ryujinx.Common.Configuration;
|
using Ryujinx.Common.Configuration;
|
||||||
@@ -26,7 +25,6 @@ using Ryujinx.HLE.HOS.SystemState;
|
|||||||
using Ryujinx.HLE.Loaders.Npdm;
|
using Ryujinx.HLE.Loaders.Npdm;
|
||||||
using Ryujinx.HLE.Loaders.Processes.Extensions;
|
using Ryujinx.HLE.Loaders.Processes.Extensions;
|
||||||
using Ryujinx.HLE.Utilities;
|
using Ryujinx.HLE.Utilities;
|
||||||
using Starscript;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -43,7 +41,7 @@ using TimeSpan = System.TimeSpan;
|
|||||||
|
|
||||||
namespace Ryujinx.Ava.Systems.AppLibrary
|
namespace Ryujinx.Ava.Systems.AppLibrary
|
||||||
{
|
{
|
||||||
public class ApplicationLibrary : IStarscriptObject
|
public class ApplicationLibrary
|
||||||
{
|
{
|
||||||
public Language DesiredLanguage { get; set; }
|
public Language DesiredLanguage { get; set; }
|
||||||
public event EventHandler<ApplicationCountUpdatedEventArgs> ApplicationCountUpdated;
|
public event EventHandler<ApplicationCountUpdatedEventArgs> ApplicationCountUpdated;
|
||||||
@@ -1613,14 +1611,5 @@ namespace Ryujinx.Ava.Systems.AppLibrary
|
|||||||
ApplicationData newApplication = newApplications.First(it => it.IdBase == appIdBase);
|
ApplicationData newApplication = newApplications.First(it => it.IdBase == appIdBase);
|
||||||
_applications.AddOrUpdate(newApplication);
|
_applications.AddOrUpdate(newApplication);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ValueMap _starscriptMap;
|
|
||||||
|
|
||||||
public ValueMap ToStarscript()
|
|
||||||
{
|
|
||||||
_starscriptMap ??= StarscriptHelper.Wrap(this);
|
|
||||||
|
|
||||||
return _starscriptMap;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,29 +0,0 @@
|
|||||||
using Ryujinx.Ava.Systems.AppLibrary;
|
|
||||||
using Ryujinx.Common;
|
|
||||||
using Starscript;
|
|
||||||
|
|
||||||
namespace Ryujinx.Ava.Systems.Starscript
|
|
||||||
{
|
|
||||||
public static class RyujinxStarscript
|
|
||||||
{
|
|
||||||
public static readonly StarscriptHypervisor Hypervisor = StarscriptHypervisor.Create().WithStandardLibrary(true);
|
|
||||||
|
|
||||||
static RyujinxStarscript()
|
|
||||||
{
|
|
||||||
Hypervisor.Set("ryujinx.releaseChannel",
|
|
||||||
ReleaseInformation.IsCanaryBuild
|
|
||||||
? "Canary"
|
|
||||||
: ReleaseInformation.IsReleaseBuild
|
|
||||||
? "Stable"
|
|
||||||
: "Custom");
|
|
||||||
Hypervisor.Set("ryujinx.version", Program.Version);
|
|
||||||
Hypervisor.Set("appLibrary", RyujinxApp.MainWindow.ApplicationLibrary);
|
|
||||||
Hypervisor.Set("currentApplication", () =>
|
|
||||||
RyujinxApp.MainWindow.ApplicationLibrary.FindApplication(
|
|
||||||
RyujinxApp.MainWindow.ViewModel.AppHost?.ApplicationId ?? 0,
|
|
||||||
out ApplicationData appData)
|
|
||||||
? StarscriptHelper.Wrap(appData)
|
|
||||||
: Value.Null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,68 +0,0 @@
|
|||||||
using Gommon;
|
|
||||||
using Ryujinx.Ava.Systems.AppLibrary;
|
|
||||||
using Starscript;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Ryujinx.Ava.Systems.Starscript
|
|
||||||
{
|
|
||||||
public static class StarscriptHelper
|
|
||||||
{
|
|
||||||
public static ValueMap Wrap(ApplicationLibrary appLib)
|
|
||||||
{
|
|
||||||
ValueMap lMap = new();
|
|
||||||
lMap.Set("appCount", () => appLib.Applications.Count);
|
|
||||||
lMap.Set("dlcCount", () => appLib.DownloadableContents.Count);
|
|
||||||
lMap.Set("updateCount", () => appLib.TitleUpdates.Count);
|
|
||||||
lMap.Set("has", ctx =>
|
|
||||||
{
|
|
||||||
ulong titleId;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
titleId = ctx.Constrain(Constraint.ExactlyOneArgument).NextString(1).ToULong();
|
|
||||||
}
|
|
||||||
catch (FormatException)
|
|
||||||
{
|
|
||||||
throw ctx.Error(
|
|
||||||
$"Invalid input to {ctx.FormattedName}; input must be a hexadecimal number in a string.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return appLib.FindApplication(titleId, out _);
|
|
||||||
});
|
|
||||||
lMap.Set("get", ctx =>
|
|
||||||
{
|
|
||||||
ulong titleId;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
titleId = ctx.Constrain(Constraint.ExactlyOneArgument).NextString(1).ToULong();
|
|
||||||
}
|
|
||||||
catch (FormatException)
|
|
||||||
{
|
|
||||||
throw ctx.Error(
|
|
||||||
$"Invalid input to {ctx.FormattedName}; input must be a hexadecimal number in a string.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return appLib.FindApplication(titleId,
|
|
||||||
out ApplicationData applicationData)
|
|
||||||
? Wrap(applicationData)
|
|
||||||
: null;
|
|
||||||
});
|
|
||||||
return lMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ValueMap Wrap(ApplicationData appData)
|
|
||||||
{
|
|
||||||
ValueMap aMap = new();
|
|
||||||
aMap.Set("name", appData.Name);
|
|
||||||
aMap.Set("version", appData.Version);
|
|
||||||
aMap.Set("developer", appData.Developer);
|
|
||||||
aMap.Set("fileExtension", appData.FileExtension);
|
|
||||||
aMap.Set("fileSize", appData.FileSizeString);
|
|
||||||
aMap.Set("hasLdnGames", appData.HasLdnGames);
|
|
||||||
aMap.Set("timePlayed", appData.TimePlayedString);
|
|
||||||
aMap.Set("isFavorite", appData.Favorite);
|
|
||||||
return aMap;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,21 +0,0 @@
|
|||||||
<UserControl xmlns="https://github.com/avaloniaui"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
||||||
xmlns:local="using:Ryujinx.Ava.Systems.Starscript"
|
|
||||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
|
||||||
x:Class="Ryujinx.Ava.Systems.Starscript.StarscriptTextBox"
|
|
||||||
x:DataType="local:StarscriptTextBoxViewModel">
|
|
||||||
<StackPanel Spacing="10">
|
|
||||||
<TextBlock Text="{Binding ErrorMessage}" IsVisible="{Binding HasError}"/>
|
|
||||||
<TextBlock Text="{Binding CurrentScriptResult}" IsVisible="{Binding !HasError}"/>
|
|
||||||
<AutoCompleteBox Name="InputBox"
|
|
||||||
HorizontalAlignment="Stretch"
|
|
||||||
VerticalAlignment="Stretch"
|
|
||||||
FilterMode="Custom"
|
|
||||||
MinimumPrefixLength="0"
|
|
||||||
MaxDropDownHeight="400">
|
|
||||||
</AutoCompleteBox>
|
|
||||||
</StackPanel>
|
|
||||||
</UserControl>
|
|
||||||
|
|
@@ -1,87 +0,0 @@
|
|||||||
using Avalonia;
|
|
||||||
using Avalonia.Controls;
|
|
||||||
using Avalonia.Styling;
|
|
||||||
using FluentAvalonia.UI.Controls;
|
|
||||||
using Humanizer;
|
|
||||||
using Ryujinx.Ava.Common.Locale;
|
|
||||||
using Ryujinx.Ava.UI.Controls;
|
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
|
||||||
using Starscript;
|
|
||||||
using Starscript.Internal;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Ryujinx.Ava.Systems.Starscript
|
|
||||||
{
|
|
||||||
public partial class StarscriptTextBox : RyujinxControl<StarscriptTextBoxViewModel>
|
|
||||||
{
|
|
||||||
public IReadOnlyList<string> CurrentSuggestions => ViewModel.CurrentSuggestions;
|
|
||||||
|
|
||||||
public ParserResult CurrentScriptSource => ViewModel.CurrentScriptSource;
|
|
||||||
public Exception Exception => ViewModel.Exception;
|
|
||||||
public Script CurrentScript => ViewModel.CurrentScript;
|
|
||||||
public StringSegment CurrentScriptResult => ViewModel.CurrentScriptResult;
|
|
||||||
|
|
||||||
public StarscriptTextBox()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
InputBox.AsyncPopulator = GetSuggestionsAsync;
|
|
||||||
InputBox.MinimumPopulateDelay = 0.Seconds();
|
|
||||||
InputBox.TextFilter = (_, _) => true;
|
|
||||||
InputBox.TextSelector = (text, suggestion) =>
|
|
||||||
{
|
|
||||||
if (text is not null && suggestion is null)
|
|
||||||
return text;
|
|
||||||
if (text is null && suggestion is not null)
|
|
||||||
return suggestion;
|
|
||||||
// ReSharper disable once ConditionIsAlwaysTrueOrFalse
|
|
||||||
if (text is null && suggestion is null)
|
|
||||||
return string.Empty;
|
|
||||||
|
|
||||||
var sb = new StringBuilder(text.Length + suggestion.Length + 1);
|
|
||||||
sb.Append(text);
|
|
||||||
|
|
||||||
for (int i = 0; i < suggestion.Length - 1; i++)
|
|
||||||
{
|
|
||||||
if (text.EndsWith(suggestion[..(suggestion.Length - i - 1)]))
|
|
||||||
{
|
|
||||||
suggestion = suggestion[(suggestion.Length - i - 1)..];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sb.Append(suggestion);
|
|
||||||
|
|
||||||
return sb.ToString();
|
|
||||||
};
|
|
||||||
|
|
||||||
Style textStyle = new(x => x.OfType<AutoCompleteBox>().Descendant().OfType<TextBlock>());
|
|
||||||
textStyle.Setters.Add(new Setter(MarginProperty, new Thickness(0, 0)));
|
|
||||||
|
|
||||||
Styles.Add(textStyle);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Task<IEnumerable<object>> GetSuggestionsAsync(string input, CancellationToken token)
|
|
||||||
=> Task.FromResult(ViewModel.GetSuggestions(input, token));
|
|
||||||
|
|
||||||
public static StarscriptTextBox Create(StarscriptHypervisor hv)
|
|
||||||
=> new() { ViewModel = new StarscriptTextBoxViewModel(hv) };
|
|
||||||
|
|
||||||
public static async Task Show()
|
|
||||||
{
|
|
||||||
ContentDialog contentDialog = new()
|
|
||||||
{
|
|
||||||
PrimaryButtonText = string.Empty,
|
|
||||||
SecondaryButtonText = string.Empty,
|
|
||||||
CloseButtonText = LocaleManager.Instance[LocaleKeys.UserProfilesClose],
|
|
||||||
Content = new StarscriptTextBox { ViewModel = new() }
|
|
||||||
};
|
|
||||||
|
|
||||||
await ContentDialogHelper.ShowAsync(contentDialog.ApplyStyles());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,126 +0,0 @@
|
|||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
|
||||||
using Starscript;
|
|
||||||
using Starscript.Internal;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading;
|
|
||||||
|
|
||||||
namespace Ryujinx.Ava.Systems.Starscript
|
|
||||||
{
|
|
||||||
public partial class StarscriptTextBoxViewModel : BaseModel
|
|
||||||
{
|
|
||||||
private readonly StarscriptHypervisor _hv;
|
|
||||||
|
|
||||||
public StarscriptTextBoxViewModel(StarscriptHypervisor hv = null)
|
|
||||||
{
|
|
||||||
_hv = hv ?? RyujinxStarscript.Hypervisor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ObservableCollection<string> CurrentSuggestions { get; } = [];
|
|
||||||
|
|
||||||
[ObservableProperty] private bool _hasError;
|
|
||||||
[ObservableProperty] private StringSegment _currentScriptResult;
|
|
||||||
[ObservableProperty] private string _errorMessage;
|
|
||||||
private Exception _exception;
|
|
||||||
private ParserResult _currentScriptSource;
|
|
||||||
private Script _currentScript;
|
|
||||||
|
|
||||||
public Exception Exception
|
|
||||||
{
|
|
||||||
get => _exception;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
ErrorMessage = (_exception = value) switch
|
|
||||||
{
|
|
||||||
ParseException pe => pe.Error.ToString(),
|
|
||||||
StarscriptException se => se.Message,
|
|
||||||
_ => string.Empty
|
|
||||||
};
|
|
||||||
|
|
||||||
HasError = value is not null;
|
|
||||||
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ParserResult CurrentScriptSource
|
|
||||||
{
|
|
||||||
get => _currentScriptSource;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_currentScriptSource = value;
|
|
||||||
|
|
||||||
if (value is null)
|
|
||||||
{
|
|
||||||
CurrentScript = null;
|
|
||||||
CurrentScriptResult = null;
|
|
||||||
Exception = null;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
CurrentScript = Compiler.SingleCompile(value);
|
|
||||||
Exception = null;
|
|
||||||
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Script CurrentScript
|
|
||||||
{
|
|
||||||
get => _currentScript;
|
|
||||||
private set
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CurrentScriptResult = value?.Execute(_hv)!;
|
|
||||||
_currentScript = value;
|
|
||||||
Exception = null;
|
|
||||||
}
|
|
||||||
catch (StarscriptException se)
|
|
||||||
{
|
|
||||||
_currentScript = null;
|
|
||||||
CurrentScriptResult = null;
|
|
||||||
Exception = se;
|
|
||||||
}
|
|
||||||
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ReExecuteScript()
|
|
||||||
{
|
|
||||||
if (_currentScript is null) return;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CurrentScriptResult = _currentScript.Execute(_hv)!;
|
|
||||||
}
|
|
||||||
catch (StarscriptException se)
|
|
||||||
{
|
|
||||||
CurrentScriptResult = null;
|
|
||||||
Exception = se;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<object> GetSuggestions(string input, CancellationToken token)
|
|
||||||
{
|
|
||||||
CurrentSuggestions.Clear();
|
|
||||||
|
|
||||||
CurrentScriptSource = _hv.ParseAndGetCompletions(input, input.Length, CompletionCallback, token);
|
|
||||||
|
|
||||||
if (CurrentScriptSource.HasErrors)
|
|
||||||
{
|
|
||||||
Exception = new ParseException(CurrentScriptSource.Errors.First());
|
|
||||||
}
|
|
||||||
|
|
||||||
OnPropertyChanged(nameof(CurrentSuggestions));
|
|
||||||
|
|
||||||
return CurrentSuggestions;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CompletionCallback(string result, bool isFunction) => CurrentSuggestions.Add(isFunction ? $"{result}(" : result);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -14,8 +14,7 @@
|
|||||||
Command="{Binding ToggleFavorite}"
|
Command="{Binding ToggleFavorite}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuToggleFavorite}"
|
Header="{ext:Locale GameListContextMenuToggleFavorite}"
|
||||||
Icon="{ext:Icon fa-solid fa-star}"
|
Icon="{ext:Icon fa-solid fa-star}" />
|
||||||
ToolTip.Tip="{ext:Locale GameListContextMenuToggleFavoriteToolTip}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding CreateApplicationShortcut}"
|
Command="{Binding CreateApplicationShortcut}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
@@ -47,43 +46,37 @@
|
|||||||
Command="{Binding OpenApplicationData}"
|
Command="{Binding OpenApplicationData}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuShowGameData}"
|
Header="{ext:Locale GameListContextMenuShowGameData}"
|
||||||
Icon="{ext:Icon fa-solid fa-chart-line}"
|
Icon="{ext:Icon fa-solid fa-chart-line}" />
|
||||||
ToolTip.Tip="{ext:Locale GameListContextMenuShowGameDataToolTip}"/>
|
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenUserSaveDirectory}"
|
Command="{Binding OpenUserSaveDirectory}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuOpenUserSaveDirectory}"
|
Header="{ext:Locale GameListContextMenuOpenUserSaveDirectory}"
|
||||||
Icon="{ext:Icon fa-solid fa-sd-card}"
|
Icon="{ext:Icon fa-solid fa-sd-card}"
|
||||||
IsEnabled="{Binding OpenUserSaveDirectoryEnabled}"
|
IsEnabled="{Binding OpenUserSaveDirectoryEnabled}" />
|
||||||
ToolTip.Tip="{ext:Locale GameListContextMenuOpenUserSaveDirectoryToolTip}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenDeviceSaveDirectory}"
|
Command="{Binding OpenDeviceSaveDirectory}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuOpenDeviceSaveDirectory}"
|
Header="{ext:Locale GameListContextMenuOpenDeviceSaveDirectory}"
|
||||||
Icon="{ext:Icon fa-solid fa-hard-drive}"
|
Icon="{ext:Icon fa-solid fa-hard-drive}"
|
||||||
IsEnabled="{Binding OpenDeviceSaveDirectoryEnabled}"
|
IsEnabled="{Binding OpenDeviceSaveDirectoryEnabled}" />
|
||||||
ToolTip.Tip="{ext:Locale GameListContextMenuOpenDeviceSaveDirectoryToolTip}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenBcatSaveDirectory}"
|
Command="{Binding OpenBcatSaveDirectory}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuOpenBcatSaveDirectory}"
|
Header="{ext:Locale GameListContextMenuOpenBcatSaveDirectory}"
|
||||||
Icon="{ext:Icon fa-solid fa-box-archive}"
|
Icon="{ext:Icon fa-solid fa-box-archive}"
|
||||||
IsEnabled="{Binding OpenBcatSaveDirectoryEnabled}"
|
IsEnabled="{Binding OpenBcatSaveDirectoryEnabled}" />
|
||||||
ToolTip.Tip="{ext:Locale GameListContextMenuOpenBcatSaveDirectoryToolTip}" />
|
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenTitleUpdateManager}"
|
Command="{Binding OpenTitleUpdateManager}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuManageTitleUpdates}"
|
Header="{ext:Locale GameListContextMenuManageTitleUpdates}"
|
||||||
Icon="{ext:Icon fa-solid fa-code-compare}"
|
Icon="{ext:Icon fa-solid fa-code-compare}" />
|
||||||
ToolTip.Tip="{ext:Locale GameListContextMenuManageTitleUpdatesToolTip}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenDownloadableContentManager}"
|
Command="{Binding OpenDownloadableContentManager}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuManageDlc}"
|
Header="{ext:Locale GameListContextMenuManageDlc}"
|
||||||
Icon="{ext:Icon fa-solid fa-download}"
|
Icon="{ext:Icon fa-solid fa-download}" />
|
||||||
ToolTip.Tip="{ext:Locale GameListContextMenuManageDlcToolTip}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenCheatManager}"
|
Command="{Binding OpenCheatManager}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
@@ -101,8 +94,7 @@
|
|||||||
Command="{Binding OpenModsDirectory}"
|
Command="{Binding OpenModsDirectory}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuOpenModsDirectory}"
|
Header="{ext:Locale GameListContextMenuOpenModsDirectory}"
|
||||||
Icon="{ext:Icon fa-solid fa-folder}"
|
Icon="{ext:Icon fa-solid fa-folder}" />
|
||||||
ToolTip.Tip="{ext:Locale GameListContextMenuOpenModsDirectoryToolTip}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenSdModsDirectory}"
|
Command="{Binding OpenSdModsDirectory}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
@@ -140,14 +132,12 @@
|
|||||||
Command="{Binding OpenPtcDirectory}"
|
Command="{Binding OpenPtcDirectory}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuCacheManagementOpenPptcDirectory}"
|
Header="{ext:Locale GameListContextMenuCacheManagementOpenPptcDirectory}"
|
||||||
Icon="{ext:Icon fa-solid fa-folder}"
|
Icon="{ext:Icon fa-solid fa-folder}" />
|
||||||
ToolTip.Tip="{ext:Locale GameListContextMenuCacheManagementOpenPptcDirectoryToolTip}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenShaderCacheDirectory}"
|
Command="{Binding OpenShaderCacheDirectory}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuCacheManagementOpenShaderCacheDirectory}"
|
Header="{ext:Locale GameListContextMenuCacheManagementOpenShaderCacheDirectory}"
|
||||||
Icon="{ext:Icon fa-solid fa-folder}"
|
Icon="{ext:Icon fa-solid fa-folder}" />
|
||||||
ToolTip.Tip="{ext:Locale GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip}" />
|
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem Header="{ext:Locale GameListContextMenuExtractData}" Icon="{ext:Icon fa-solid fa-file-export}">
|
<MenuItem Header="{ext:Locale GameListContextMenuExtractData}" Icon="{ext:Icon fa-solid fa-file-export}">
|
||||||
<MenuItem
|
<MenuItem
|
||||||
|
@@ -63,18 +63,15 @@
|
|||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenRyujinxFolder}"
|
Command="{Binding OpenRyujinxFolder}"
|
||||||
Header="{ext:Locale MenuBarFileOpenEmuFolder}"
|
Header="{ext:Locale MenuBarFileOpenEmuFolder}"
|
||||||
Icon="{ext:Icon fa-solid fa-folder-closed}"
|
Icon="{ext:Icon fa-solid fa-folder-closed}" />
|
||||||
ToolTip.Tip="{ext:Locale OpenRyujinxFolderTooltip}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenScreenshotsFolder}"
|
Command="{Binding OpenScreenshotsFolder}"
|
||||||
Header="{ext:Locale MenuBarFileOpenScreenshotsFolder}"
|
Header="{ext:Locale MenuBarFileOpenScreenshotsFolder}"
|
||||||
Icon="{ext:Icon fa-solid fa-desktop}"
|
Icon="{ext:Icon fa-solid fa-desktop}" />
|
||||||
ToolTip.Tip="{ext:Locale OpenScreenshotFolderTooltip}"/>
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenLogsFolder}"
|
Command="{Binding OpenLogsFolder}"
|
||||||
Header="{ext:Locale MenuBarFileOpenLogsFolder}"
|
Header="{ext:Locale MenuBarFileOpenLogsFolder}"
|
||||||
Icon="{ext:Icon fa-solid fa-file-lines}"
|
Icon="{ext:Icon fa-solid fa-file-lines}" />
|
||||||
ToolTip.Tip="{ext:Locale OpenRyujinxLogsTooltip}" />
|
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Name="CloseRyujinxMenuItem"
|
Name="CloseRyujinxMenuItem"
|
||||||
@@ -149,7 +146,6 @@
|
|||||||
Padding="0"
|
Padding="0"
|
||||||
Header="{ext:Locale MenuBarOptionsSettings}"
|
Header="{ext:Locale MenuBarOptionsSettings}"
|
||||||
Icon="{ext:Icon fa-solid fa-gear}"
|
Icon="{ext:Icon fa-solid fa-gear}"
|
||||||
ToolTip.Tip="{ext:Locale OpenSettingsTooltip}"
|
|
||||||
Classes="withCheckbox">
|
Classes="withCheckbox">
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem
|
<MenuItem
|
||||||
@@ -158,7 +154,6 @@
|
|||||||
Header="{ext:Locale MenuBarOptionsManageUserProfiles}"
|
Header="{ext:Locale MenuBarOptionsManageUserProfiles}"
|
||||||
Icon="{ext:Icon fa-solid fa-user}"
|
Icon="{ext:Icon fa-solid fa-user}"
|
||||||
IsEnabled="{Binding EnableNonGameRunningControls}"
|
IsEnabled="{Binding EnableNonGameRunningControls}"
|
||||||
ToolTip.Tip="{ext:Locale OpenProfileManagerTooltip}"
|
|
||||||
Classes="withCheckbox">
|
Classes="withCheckbox">
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
@@ -253,10 +248,6 @@
|
|||||||
Header="{ext:Locale MenuBarHelpAbout}"
|
Header="{ext:Locale MenuBarHelpAbout}"
|
||||||
Icon="{ext:Icon fa-solid fa-circle-info}"
|
Icon="{ext:Icon fa-solid fa-circle-info}"
|
||||||
ToolTip.Tip="{ext:Locale OpenAboutTooltip}" />
|
ToolTip.Tip="{ext:Locale OpenAboutTooltip}" />
|
||||||
<MenuItem
|
|
||||||
Name="StarscriptDebugMenuItem"
|
|
||||||
Header="Debug Starscript"
|
|
||||||
Icon="{ext:Icon fa-solid fa-star}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Name="UpdateMenuItem"
|
Name="UpdateMenuItem"
|
||||||
IsEnabled="{Binding CanUpdate}"
|
IsEnabled="{Binding CanUpdate}"
|
||||||
|
@@ -8,7 +8,6 @@ using LibHac.Ns;
|
|||||||
using Ryujinx.Ava.Common.Locale;
|
using Ryujinx.Ava.Common.Locale;
|
||||||
using Ryujinx.Ava.Systems.AppLibrary;
|
using Ryujinx.Ava.Systems.AppLibrary;
|
||||||
using Ryujinx.Ava.Systems.Configuration;
|
using Ryujinx.Ava.Systems.Configuration;
|
||||||
using Ryujinx.Ava.Systems.Starscript;
|
|
||||||
using Ryujinx.Ava.UI.Controls;
|
using Ryujinx.Ava.UI.Controls;
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
using Ryujinx.Ava.UI.Helpers;
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
using Ryujinx.Ava.UI.ViewModels;
|
||||||
@@ -53,8 +52,6 @@ namespace Ryujinx.Ava.UI.Views.Main
|
|||||||
|
|
||||||
UpdateMenuItem.Command = MainWindowViewModel.UpdateCommand;
|
UpdateMenuItem.Command = MainWindowViewModel.UpdateCommand;
|
||||||
|
|
||||||
StarscriptDebugMenuItem.Command = Commands.Create(StarscriptTextBox.Show);
|
|
||||||
|
|
||||||
FaqMenuItem.Command =
|
FaqMenuItem.Command =
|
||||||
SetupGuideMenuItem.Command =
|
SetupGuideMenuItem.Command =
|
||||||
LdnGuideMenuItem.Command = Commands.Create<string>(OpenHelper.OpenUrl);
|
LdnGuideMenuItem.Command = Commands.Create<string>(OpenHelper.OpenUrl);
|
||||||
|
@@ -285,12 +285,10 @@
|
|||||||
Spacing="10">
|
Spacing="10">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock VerticalAlignment="Center"
|
<TextBlock VerticalAlignment="Center"
|
||||||
ToolTip.Tip="{ext:Locale ShaderDumpPathTooltip}"
|
|
||||||
Text="{ext:Locale SettingsTabGraphicsShaderDumpPath}"
|
Text="{ext:Locale SettingsTabGraphicsShaderDumpPath}"
|
||||||
Width="250" />
|
Width="250" />
|
||||||
<TextBox Text="{Binding ShaderDumpPath}"
|
<TextBox Text="{Binding ShaderDumpPath}"
|
||||||
Width="350"
|
Width="350" />
|
||||||
ToolTip.Tip="{ext:Locale ShaderDumpPathTooltip}" />
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
@@ -40,7 +40,6 @@
|
|||||||
Width="250" />
|
Width="250" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
SelectedIndex="{Binding Region}"
|
SelectedIndex="{Binding Region}"
|
||||||
ToolTip.Tip="{ext:Locale RegionTooltip}"
|
|
||||||
HorizontalContentAlignment="Left"
|
HorizontalContentAlignment="Left"
|
||||||
Width="350">
|
Width="350">
|
||||||
<ComboBoxItem>
|
<ComboBoxItem>
|
||||||
@@ -72,11 +71,9 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{ext:Locale SettingsTabSystemSystemLanguage}"
|
Text="{ext:Locale SettingsTabSystemSystemLanguage}"
|
||||||
ToolTip.Tip="{ext:Locale LanguageTooltip}"
|
|
||||||
Width="250" />
|
Width="250" />
|
||||||
<ComboBox
|
<ComboBox
|
||||||
SelectedIndex="{Binding Language}"
|
SelectedIndex="{Binding Language}"
|
||||||
ToolTip.Tip="{ext:Locale LanguageTooltip}"
|
|
||||||
HorizontalContentAlignment="Left"
|
HorizontalContentAlignment="Left"
|
||||||
Width="350">
|
Width="350">
|
||||||
<ComboBoxItem>
|
<ComboBoxItem>
|
||||||
@@ -141,7 +138,6 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{ext:Locale SettingsTabSystemSystemTimeZone}"
|
Text="{ext:Locale SettingsTabSystemSystemTimeZone}"
|
||||||
ToolTip.Tip="{ext:Locale TimezoneTooltip}"
|
|
||||||
Width="250" />
|
Width="250" />
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
Name="TimeZoneBox"
|
Name="TimeZoneBox"
|
||||||
@@ -152,7 +148,6 @@
|
|||||||
SelectionChanged="TimeZoneBox_OnSelectionChanged"
|
SelectionChanged="TimeZoneBox_OnSelectionChanged"
|
||||||
Text="{Binding Path=TimeZone, Mode=OneWay}"
|
Text="{Binding Path=TimeZone, Mode=OneWay}"
|
||||||
TextChanged="TimeZoneBox_OnTextChanged"
|
TextChanged="TimeZoneBox_OnTextChanged"
|
||||||
ToolTip.Tip="{ext:Locale TimezoneTooltip}"
|
|
||||||
ValueMemberBinding="{Binding Mode=OneWay, Converter={x:Static helpers:TimeZoneConverter.Instance}}" />
|
ValueMemberBinding="{Binding Mode=OneWay, Converter={x:Static helpers:TimeZoneConverter.Instance}}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel
|
<StackPanel
|
||||||
@@ -163,13 +158,11 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{ext:Locale SettingsTabSystemSystemTime}"
|
Text="{ext:Locale SettingsTabSystemSystemTime}"
|
||||||
ToolTip.Tip="{ext:Locale TimeTooltip}"
|
|
||||||
Width="250"/>
|
Width="250"/>
|
||||||
<DatePicker
|
<DatePicker
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
IsEnabled="{Binding !MatchSystemTime}"
|
IsEnabled="{Binding !MatchSystemTime}"
|
||||||
SelectedDate="{Binding CurrentDate}"
|
SelectedDate="{Binding CurrentDate}"
|
||||||
ToolTip.Tip="{ext:Locale TimeTooltip}"
|
|
||||||
Width="350" />
|
Width="350" />
|
||||||
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}"/>
|
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
@@ -183,8 +176,7 @@
|
|||||||
ClockIdentifier="24HourClock"
|
ClockIdentifier="24HourClock"
|
||||||
IsEnabled="{Binding !MatchSystemTime}"
|
IsEnabled="{Binding !MatchSystemTime}"
|
||||||
SelectedTime="{Binding CurrentTime}"
|
SelectedTime="{Binding CurrentTime}"
|
||||||
Width="350"
|
Width="350" />
|
||||||
ToolTip.Tip="{ext:Locale TimeTooltip}" />
|
|
||||||
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}"/>
|
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel
|
<StackPanel
|
||||||
|
Reference in New Issue
Block a user