mirror of
https://github.com/GreemDev/Ryujinx.git
synced 2024-12-22 19:15:47 +00:00
UI: Link to the Discord in the About window, more Discord RPC games.
This commit is contained in:
parent
df9450d2ad
commit
456f1ec739
7 changed files with 25 additions and 29 deletions
|
@ -8,7 +8,7 @@ namespace Ryujinx.Common
|
||||||
private const string FlatHubChannelOwner = "flathub";
|
private const string FlatHubChannelOwner = "flathub";
|
||||||
|
|
||||||
private const string BuildVersion = "%%RYUJINX_BUILD_VERSION%%";
|
private const string BuildVersion = "%%RYUJINX_BUILD_VERSION%%";
|
||||||
private const string BuildGitHash = "%%RYUJINX_BUILD_GIT_HASH%%";
|
public const string BuildGitHash = "%%RYUJINX_BUILD_GIT_HASH%%";
|
||||||
private const string ReleaseChannelName = "%%RYUJINX_TARGET_RELEASE_CHANNEL_NAME%%";
|
private const string ReleaseChannelName = "%%RYUJINX_TARGET_RELEASE_CHANNEL_NAME%%";
|
||||||
private const string ConfigFileName = "%%RYUJINX_CONFIG_FILE_NAME%%";
|
private const string ConfigFileName = "%%RYUJINX_CONFIG_FILE_NAME%%";
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ namespace Ryujinx.HLE
|
||||||
public TamperMachine TamperMachine { get; }
|
public TamperMachine TamperMachine { get; }
|
||||||
public IHostUIHandler UIHandler { get; }
|
public IHostUIHandler UIHandler { get; }
|
||||||
|
|
||||||
public bool EnableDeviceVsync { get; set; } = true;
|
public bool EnableDeviceVsync { get; set; }
|
||||||
|
|
||||||
public bool IsFrameAvailable => Gpu.Window.IsFrameAvailable;
|
public bool IsFrameAvailable => Gpu.Window.IsFrameAvailable;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace Ryujinx.UI.Common
|
||||||
{
|
{
|
||||||
public static Timestamps StartedAt { get; set; }
|
public static Timestamps StartedAt { get; set; }
|
||||||
|
|
||||||
private static readonly string _description = $"{ReleaseInformation.ReleaseChannelOwner}/{ReleaseInformation.ReleaseChannelRepo} {ReleaseInformation.Version}";
|
private static readonly string _description = $"v{ReleaseInformation.Version} {ReleaseInformation.ReleaseChannelOwner}/{ReleaseInformation.ReleaseChannelRepo}@{ReleaseInformation.BuildGitHash}";
|
||||||
private const string ApplicationId = "1293250299716173864";
|
private const string ApplicationId = "1293250299716173864";
|
||||||
|
|
||||||
private const int ApplicationByteLimit = 128;
|
private const int ApplicationByteLimit = 128;
|
||||||
|
@ -70,7 +70,7 @@ namespace Ryujinx.UI.Common
|
||||||
{
|
{
|
||||||
Assets = new Assets
|
Assets = new Assets
|
||||||
{
|
{
|
||||||
LargeImageKey = _discordGameAssets.Contains(procRes.ProgramIdText.ToLower()) ? procRes.ProgramIdText : "game",
|
LargeImageKey = _discordGameAssetKeys.Contains(procRes.ProgramIdText.ToLower()) ? procRes.ProgramIdText : "game",
|
||||||
LargeImageText = TruncateToByteLength($"{appMeta.Title} | {procRes.DisplayVersion}"),
|
LargeImageText = TruncateToByteLength($"{appMeta.Title} | {procRes.DisplayVersion}"),
|
||||||
SmallImageKey = "ryujinx",
|
SmallImageKey = "ryujinx",
|
||||||
SmallImageText = TruncateToByteLength(_description)
|
SmallImageText = TruncateToByteLength(_description)
|
||||||
|
@ -115,11 +115,12 @@ namespace Ryujinx.UI.Common
|
||||||
_discordClient?.Dispose();
|
_discordClient?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static readonly string[] _discordGameAssets = [
|
private static readonly string[] _discordGameAssetKeys = [
|
||||||
"01002da013484000", // The Legend of Zelda: Skyward Sword HD
|
"01002da013484000", // The Legend of Zelda: Skyward Sword HD
|
||||||
"01007ef00011e000", // The Legend of Zelda: Breath of the Wild
|
"01007ef00011e000", // The Legend of Zelda: Breath of the Wild
|
||||||
"0100f2c0115b6000", // The Legend of Zelda: Tears of the Kingdom
|
"0100f2c0115b6000", // The Legend of Zelda: Tears of the Kingdom
|
||||||
"01008cf01baac000", // The Legend of Zelda: Echoes of Wisdom
|
"01008cf01baac000", // The Legend of Zelda: Echoes of Wisdom
|
||||||
|
"01006bb00c6f0000", // The Legend of Zelda: Link's Awakening
|
||||||
|
|
||||||
"0100000000010000", // SUPER MARIO ODYSSEY
|
"0100000000010000", // SUPER MARIO ODYSSEY
|
||||||
"010015100b514000", // Super Mario Bros. Wonder
|
"010015100b514000", // Super Mario Bros. Wonder
|
||||||
|
@ -128,6 +129,9 @@ namespace Ryujinx.UI.Common
|
||||||
"010028600ebda000", // Super Mario 3D World + Bowser's Fury
|
"010028600ebda000", // Super Mario 3D World + Bowser's Fury
|
||||||
"0100ecd018ebe000", // Paper Mario: The Thousand-Year Door
|
"0100ecd018ebe000", // Paper Mario: The Thousand-Year Door
|
||||||
|
|
||||||
|
"010048701995e000", // Luigi's Mansion 2 HD
|
||||||
|
"0100dca0064a6000", // Luigi's Mansion 3
|
||||||
|
|
||||||
"01008f6008c5e000", // Pokémon Violet
|
"01008f6008c5e000", // Pokémon Violet
|
||||||
"0100abf008968000", // Pokémon Sword
|
"0100abf008968000", // Pokémon Sword
|
||||||
"01008db008c2c000", // Pokémon Shield
|
"01008db008c2c000", // Pokémon Shield
|
||||||
|
@ -137,10 +141,11 @@ namespace Ryujinx.UI.Common
|
||||||
"0100aa80194b0000", // Pikmin 1
|
"0100aa80194b0000", // Pikmin 1
|
||||||
"0100d680194b2000", // Pikmin 2
|
"0100d680194b2000", // Pikmin 2
|
||||||
"0100f4c009322000", // Pikmin 3 Deluxe
|
"0100f4c009322000", // Pikmin 3 Deluxe
|
||||||
"0100b7c00933a000", // Pikmin
|
"0100b7c00933a000", // Pikmin 4
|
||||||
|
|
||||||
"0100c2500fc20000", // Splatoon 3
|
"0100c2500fc20000", // Splatoon 3
|
||||||
"0100ba0018500000", // Splatoon 3: Splatfest World Premiere
|
"0100ba0018500000", // Splatoon 3: Splatfest World Premiere
|
||||||
|
"01007820196a6000", // Red Dead Redemption
|
||||||
"0100744001588000", // Cars 3: Driven to Win
|
"0100744001588000", // Cars 3: Driven to Win
|
||||||
"01006f8002326000", // Animal Crossing: New Horizons
|
"01006f8002326000", // Animal Crossing: New Horizons
|
||||||
"0100853015e86000", // No Man's Sky
|
"0100853015e86000", // No Man's Sky
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
Spacing="10">
|
Spacing="10">
|
||||||
<Button
|
<Button Name="GitHubRepoButton"
|
||||||
MinWidth="30"
|
MinWidth="30"
|
||||||
MinHeight="30"
|
MinHeight="30"
|
||||||
MaxWidth="30"
|
MaxWidth="30"
|
||||||
|
@ -127,7 +127,6 @@
|
||||||
Background="Transparent"
|
Background="Transparent"
|
||||||
Click="Button_OnClick"
|
Click="Button_OnClick"
|
||||||
CornerRadius="15"
|
CornerRadius="15"
|
||||||
Tag="https://github.com/GreemDev/Ryujinx"
|
|
||||||
ToolTip.Tip="{locale:Locale AboutGithubUrlTooltipMessage}">
|
ToolTip.Tip="{locale:Locale AboutGithubUrlTooltipMessage}">
|
||||||
<Image Source="{Binding GithubLogo}" />
|
<Image Source="{Binding GithubLogo}" />
|
||||||
</Button>
|
</Button>
|
||||||
|
@ -140,7 +139,7 @@
|
||||||
Background="Transparent"
|
Background="Transparent"
|
||||||
Click="Button_OnClick"
|
Click="Button_OnClick"
|
||||||
CornerRadius="15"
|
CornerRadius="15"
|
||||||
Tag="https://discordapp.com/invite/N2FmfVc"
|
Tag="https://discord.gg/dHPrkBkkyA"
|
||||||
ToolTip.Tip="{locale:Locale AboutDiscordUrlTooltipMessage}">
|
ToolTip.Tip="{locale:Locale AboutDiscordUrlTooltipMessage}">
|
||||||
<Image Source="{Binding DiscordLogo}" />
|
<Image Source="{Binding DiscordLogo}" />
|
||||||
</Button>
|
</Button>
|
||||||
|
|
|
@ -7,6 +7,7 @@ using FluentAvalonia.UI.Controls;
|
||||||
using Ryujinx.Ava.Common.Locale;
|
using Ryujinx.Ava.Common.Locale;
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
using Ryujinx.Ava.UI.Helpers;
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
using Ryujinx.Ava.UI.ViewModels;
|
||||||
|
using Ryujinx.Common;
|
||||||
using Ryujinx.UI.Common.Helper;
|
using Ryujinx.UI.Common.Helper;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Button = Avalonia.Controls.Button;
|
using Button = Avalonia.Controls.Button;
|
||||||
|
@ -20,6 +21,9 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
DataContext = new AboutWindowViewModel();
|
DataContext = new AboutWindowViewModel();
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
GitHubRepoButton.Tag =
|
||||||
|
$"https://github.com/{ReleaseInformation.ReleaseChannelOwner}/{ReleaseInformation.ReleaseChannelRepo}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task Show()
|
public static async Task Show()
|
||||||
|
@ -46,9 +50,9 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
|
|
||||||
private void Button_OnClick(object sender, RoutedEventArgs e)
|
private void Button_OnClick(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (sender is Button button)
|
if (sender is Button { Tag: { } url })
|
||||||
{
|
{
|
||||||
OpenHelper.OpenUrl(button.Tag.ToString());
|
OpenHelper.OpenUrl(url.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,8 +43,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
{
|
{
|
||||||
if (ViewModel.AmiiboSelectedIndex > -1)
|
if (ViewModel.AmiiboSelectedIndex > -1)
|
||||||
{
|
{
|
||||||
AmiiboApi amiibo = ViewModel.AmiiboList[ViewModel.AmiiboSelectedIndex];
|
ScannedAmiibo = ViewModel.AmiiboList[ViewModel.AmiiboSelectedIndex];
|
||||||
ScannedAmiibo = amiibo;
|
|
||||||
IsScanned = true;
|
IsScanned = true;
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
|
|
||||||
_enabledCheatsPath = Path.Combine(titleModsPath, "cheats", "enabled.txt");
|
_enabledCheatsPath = Path.Combine(titleModsPath, "cheats", "enabled.txt");
|
||||||
|
|
||||||
string[] enabled = Array.Empty<string>();
|
string[] enabled = [];
|
||||||
|
|
||||||
if (File.Exists(_enabledCheatsPath))
|
if (File.Exists(_enabledCheatsPath))
|
||||||
{
|
{
|
||||||
|
@ -101,24 +101,13 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
public void Save()
|
public void Save()
|
||||||
{
|
{
|
||||||
if (NoCheatsFound)
|
if (NoCheatsFound)
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
List<string> enabledCheats = new();
|
var enabledCheats = LoadedCheats.SelectMany(it => it.SubNodes)
|
||||||
|
.Where(it => it.IsEnabled)
|
||||||
|
.Select(it => it.BuildIdKey);
|
||||||
|
|
||||||
foreach (var cheats in LoadedCheats)
|
Directory.CreateDirectory(Path.GetDirectoryName(_enabledCheatsPath)!);
|
||||||
{
|
|
||||||
foreach (var cheat in cheats.SubNodes)
|
|
||||||
{
|
|
||||||
if (cheat.IsEnabled)
|
|
||||||
{
|
|
||||||
enabledCheats.Add(cheat.BuildIdKey);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Directory.CreateDirectory(Path.GetDirectoryName(_enabledCheatsPath));
|
|
||||||
|
|
||||||
File.WriteAllLines(_enabledCheatsPath, enabledCheats);
|
File.WriteAllLines(_enabledCheatsPath, enabledCheats);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue