Compare commits

...

12 Commits

Author SHA1 Message Date
Evan Husted 28640bd4e1 Merge branch 'master' into master 2024-12-23 16:29:51 -06:00
Evan Husted 278fe9d4f0 Add buildvalidationtasks project to infra label 2024-12-23 16:16:48 -06:00
Evan Husted 1a3bbf71cd Merge branch 'master' into pr/418 2024-12-23 16:12:59 -06:00
GabCoolGuy a560d2efdb UI: Added missing french locales/Translated french locales (#415)
Custom refresh rate locales and fixed a couple others too
2024-12-23 15:43:06 -06:00
asfasagag a270dc721c UI: Option to resize window to 1440p, 2160p (#432)
Minor but useful quality of life addition
2024-12-22 22:49:40 -06:00
Evan Husted 23b0b22400 UI: Ensure last played date & time are always on 2 separate lines, for consistency. 2024-12-22 16:08:12 -06:00
Evan Husted 3dfbf55611 Merge remote-tracking branch 'origin/master' 2024-12-22 16:01:19 -06:00
Evan Husted cb355f504d UI: Rearrange help menu item & merge wiki page link buttons into a "category" button. 2024-12-22 16:01:09 -06:00
Marco Carvalho b5483d8fe0 Prefer generic overload when type is known (#430) 2024-12-22 13:23:35 -06:00
Evan Husted 8259f790d7 misc: Cleanup locale validator 2024-12-22 13:19:10 -06:00
Daenorth 9b6f409a86 Merge branch 'master' into master 2024-12-22 03:01:37 +01:00
Daenorth 30728e3053 Update Norwegian Translation
swiggybobo
2024-12-21 07:21:42 +01:00
14 changed files with 333 additions and 261 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ kernel:
infra: infra:
- changed-files: - changed-files:
- any-glob-to-any-file: ['.github/**', 'distribution/**', 'Directory.Packages.props'] - any-glob-to-any-file: ['.github/**', 'distribution/**', 'Directory.Packages.props', 'src/Ryujinx.BuildValidationTasks/**']
documentation: documentation:
- changed-files: - changed-files:
@@ -14,20 +14,20 @@ namespace Ryujinx.BuildValidationTasks
{ {
string path = System.Reflection.Assembly.GetExecutingAssembly().Location; string path = System.Reflection.Assembly.GetExecutingAssembly().Location;
if (path.Split(new string[] { "src" }, StringSplitOptions.None).Length == 1 ) if (path.Split(["src"], StringSplitOptions.None).Length == 1)
{ {
//i assume that we are in a build directory in the solution dir //i assume that we are in a build directory in the solution dir
path = new FileInfo(path).Directory.Parent.GetDirectories("src")[0].GetDirectories("Ryujinx")[0].GetDirectories("Assets")[0].GetFiles("locales.json")[0].FullName; path = new FileInfo(path).Directory!.Parent!.GetDirectories("src")[0].GetDirectories("Ryujinx")[0].GetDirectories("Assets")[0].GetFiles("locales.json")[0].FullName;
} }
else else
{ {
path = path.Split(new string[] { "src" }, StringSplitOptions.None)[0]; path = path.Split(["src"], StringSplitOptions.None)[0];
path = new FileInfo(path).Directory.GetDirectories("src")[0].GetDirectories("Ryujinx")[0].GetDirectories("Assets")[0].GetFiles("locales.json")[0].FullName; path = new FileInfo(path).Directory!.GetDirectories("src")[0].GetDirectories("Ryujinx")[0].GetDirectories("Assets")[0].GetFiles("locales.json")[0].FullName;
} }
string data; string data;
using (StreamReader sr = new StreamReader(path)) using (StreamReader sr = new(path))
{ {
data = sr.ReadToEnd(); data = sr.ReadToEnd();
} }
@@ -38,13 +38,10 @@ namespace Ryujinx.BuildValidationTasks
{ {
LocalesEntry locale = json.Locales[i]; LocalesEntry locale = json.Locales[i];
foreach (string language in json.Languages) foreach (string langCode in json.Languages.Where(it => !locale.Translations.ContainsKey(it)))
{ {
if (!locale.Translations.ContainsKey(language)) locale.Translations.Add(langCode, string.Empty);
{ Log.LogMessage(MessageImportance.High, $"Added '{langCode}' to Locale '{locale.ID}'");
locale.Translations.Add(language, "");
Log.LogMessage(MessageImportance.High, $"Added {{{language}}} to Locale {{{locale.ID}}}");
}
} }
locale.Translations = locale.Translations.OrderBy(pair => pair.Key).ToDictionary(pair => pair.Key, pair => pair.Value); locale.Translations = locale.Translations.OrderBy(pair => pair.Key).ToDictionary(pair => pair.Key, pair => pair.Value);
@@ -53,7 +50,7 @@ namespace Ryujinx.BuildValidationTasks
string jsonString = JsonConvert.SerializeObject(json, Formatting.Indented); string jsonString = JsonConvert.SerializeObject(json, Formatting.Indented);
using (StreamWriter sw = new StreamWriter(path)) using (StreamWriter sw = new(path))
{ {
sw.Write(jsonString); sw.Write(jsonString);
} }
@@ -62,7 +62,7 @@ namespace Ryujinx.Graphics.Vulkan
_api = api; _api = api;
_physicalDevice = physicalDevice; _physicalDevice = physicalDevice;
int totalFormats = Enum.GetNames(typeof(Format)).Length; int totalFormats = Enum.GetNames<Format>().Length;
_bufferTable = new FormatFeatureFlags[totalFormats]; _bufferTable = new FormatFeatureFlags[totalFormats];
_optimalTable = new FormatFeatureFlags[totalFormats]; _optimalTable = new FormatFeatureFlags[totalFormats];
+1 -1
View File
@@ -12,7 +12,7 @@ namespace Ryujinx.Graphics.Vulkan
static FormatTable() static FormatTable()
{ {
_table = new VkFormat[Enum.GetNames(typeof(Format)).Length]; _table = new VkFormat[Enum.GetNames<Format>().Length];
_reverseMap = new Dictionary<VkFormat, Format>(); _reverseMap = new Dictionary<VkFormat, Format>();
#pragma warning disable IDE0055 // Disable formatting #pragma warning disable IDE0055 // Disable formatting
@@ -13,7 +13,7 @@ namespace Ryujinx.Graphics.Vulkan.Queries
{ {
_pipeline = pipeline; _pipeline = pipeline;
int count = Enum.GetNames(typeof(CounterType)).Length; int count = Enum.GetNames<CounterType>().Length;
_counterQueues = new CounterQueue[count]; _counterQueues = new CounterQueue[count];
+6 -6
View File
@@ -23,18 +23,18 @@ namespace Ryujinx.HLE.HOS.Services
public IpcService(ServerBase server = null) public IpcService(ServerBase server = null)
{ {
CmifCommands = typeof(IpcService).Assembly.GetTypes() CmifCommands = GetType().Assembly.GetTypes()
.Where(type => type == GetType()) .Where(type => type == GetType())
.SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public)) .SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public))
.SelectMany(methodInfo => methodInfo.GetCustomAttributes(typeof(CommandCmifAttribute)) .SelectMany(methodInfo => methodInfo.GetCustomAttributes<CommandCmifAttribute>()
.Select(command => (((CommandCmifAttribute)command).Id, methodInfo))) .Select(command => (command.Id, methodInfo)))
.ToDictionary(command => command.Id, command => command.methodInfo); .ToDictionary(command => command.Id, command => command.methodInfo);
TipcCommands = typeof(IpcService).Assembly.GetTypes() TipcCommands = GetType().Assembly.GetTypes()
.Where(type => type == GetType()) .Where(type => type == GetType())
.SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public)) .SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public))
.SelectMany(methodInfo => methodInfo.GetCustomAttributes(typeof(CommandTipcAttribute)) .SelectMany(methodInfo => methodInfo.GetCustomAttributes<CommandTipcAttribute>()
.Select(command => (((CommandTipcAttribute)command).Id, methodInfo))) .Select(command => (command.Id, methodInfo)))
.ToDictionary(command => command.Id, command => command.methodInfo); .ToDictionary(command => command.Id, command => command.methodInfo);
Server = server; Server = server;
@@ -444,7 +444,7 @@ namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator
private ResultCode ScanInternal(IVirtualMemoryManager memory, ushort channel, ScanFilter scanFilter, ulong bufferPosition, ulong bufferSize, out ulong counter) private ResultCode ScanInternal(IVirtualMemoryManager memory, ushort channel, ScanFilter scanFilter, ulong bufferPosition, ulong bufferSize, out ulong counter)
{ {
ulong networkInfoSize = (ulong)Marshal.SizeOf(typeof(NetworkInfo)); ulong networkInfoSize = (ulong)Marshal.SizeOf<NetworkInfo>();
ulong maxGames = bufferSize / networkInfoSize; ulong maxGames = bufferSize / networkInfoSize;
MemoryHelper.FillWithZeros(memory, bufferPosition, (int)bufferSize); MemoryHelper.FillWithZeros(memory, bufferPosition, (int)bufferSize);
@@ -94,7 +94,7 @@ namespace Ryujinx.HLE.HOS.Services.Sm
{ {
if (_services.TryGetValue(name, out Type type)) if (_services.TryGetValue(name, out Type type))
{ {
ServiceAttribute serviceAttribute = (ServiceAttribute)type.GetCustomAttributes(typeof(ServiceAttribute)).First(service => ((ServiceAttribute)service).Name == name); ServiceAttribute serviceAttribute = type.GetCustomAttributes<ServiceAttribute>().First(service => service.Name == name);
IpcService service = GetServiceInstance(type, context, serviceAttribute.Parameter); IpcService service = GetServiceInstance(type, context, serviceAttribute.Parameter);
@@ -34,14 +34,14 @@ namespace Ryujinx.Horizon.Kernel.Generators
private const string TypeResult = NamespaceHorizonCommon + "." + TypeResultName; private const string TypeResult = NamespaceHorizonCommon + "." + TypeResultName;
private const string TypeExecutionContext = "IExecutionContext"; private const string TypeExecutionContext = "IExecutionContext";
private static readonly string[] _expectedResults = new string[] private static readonly string[] _expectedResults =
{ [
$"{TypeResultName}.Success", $"{TypeResultName}.Success",
$"{TypeKernelResultName}.TimedOut", $"{TypeKernelResultName}.TimedOut",
$"{TypeKernelResultName}.Cancelled", $"{TypeKernelResultName}.Cancelled",
$"{TypeKernelResultName}.PortRemoteClosed", $"{TypeKernelResultName}.PortRemoteClosed",
$"{TypeKernelResultName}.InvalidState", $"{TypeKernelResultName}.InvalidState",
}; ];
private readonly struct OutParameter private readonly struct OutParameter
{ {
+1 -1
View File
@@ -38,7 +38,7 @@ namespace Ryujinx.UI.App.Common
public string TimePlayedString => ValueFormatUtils.FormatTimeSpan(TimePlayed); public string TimePlayedString => ValueFormatUtils.FormatTimeSpan(TimePlayed);
public string LastPlayedString => ValueFormatUtils.FormatDateTime(LastPlayed) ?? LocalizedNever(); public string LastPlayedString => ValueFormatUtils.FormatDateTime(LastPlayed)?.Replace(" ", "\n") ?? LocalizedNever();
public string FileSizeString => ValueFormatUtils.FormatFileSize(FileSize); public string FileSizeString => ValueFormatUtils.FormatFileSize(FileSize);
File diff suppressed because it is too large Load Diff
@@ -97,7 +97,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
{ {
if (IsModified) if (IsModified)
{ {
_playerIdChoose = value; _playerIdChoose = value;
return; return;
} }
@@ -105,7 +105,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
IsModified = false; IsModified = false;
_playerId = value; _playerId = value;
if (!Enum.IsDefined(typeof(PlayerIndex), _playerId)) if (!Enum.IsDefined<PlayerIndex>(_playerId))
{ {
_playerId = PlayerIndex.Player1; _playerId = PlayerIndex.Player1;
+27 -24
View File
@@ -287,9 +287,16 @@
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarViewWindow}"> <MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarViewWindow}">
<MenuItem Header="{ext:Locale MenuBarViewWindow720}" Tag="1280 720" Click="ChangeWindowSize_Click" /> <MenuItem Header="{ext:Locale MenuBarViewWindow720}" Tag="1280 720" Click="ChangeWindowSize_Click" />
<MenuItem Header="{ext:Locale MenuBarViewWindow1080}" Tag="1920 1080" Click="ChangeWindowSize_Click" /> <MenuItem Header="{ext:Locale MenuBarViewWindow1080}" Tag="1920 1080" Click="ChangeWindowSize_Click" />
<MenuItem Header="{ext:Locale MenuBarViewWindow1440}" Tag="2560 1440" Click="ChangeWindowSize_Click" />
<MenuItem Header="{ext:Locale MenuBarViewWindow2160}" Tag="3840 2160" Click="ChangeWindowSize_Click" />
</MenuItem> </MenuItem>
</MenuItem> </MenuItem>
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarHelp}"> <MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarHelp}">
<MenuItem
Click="OpenAboutWindow"
Header="{ext:Locale MenuBarHelpAbout}"
Icon="{ext:Icon fa-solid fa-circle-info}"
ToolTip.Tip="{ext:Locale OpenAboutTooltip}" />
<MenuItem <MenuItem
Name="UpdateMenuItem" Name="UpdateMenuItem"
IsEnabled="{Binding CanUpdate}" IsEnabled="{Binding CanUpdate}"
@@ -298,30 +305,26 @@
Icon="{ext:Icon mdi-update}" Icon="{ext:Icon mdi-update}"
ToolTip.Tip="{ext:Locale CheckUpdatesTooltip}" /> ToolTip.Tip="{ext:Locale CheckUpdatesTooltip}" />
<Separator /> <Separator />
<MenuItem <MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarHelpFaqAndGuides}" Icon="{ext:Icon fa-solid fa-question}" >
Click="MenuItem_OnClick" <MenuItem
Header="{ext:Locale MenuBarHelpFaq}" Click="MenuItem_OnClick"
Icon="{ext:Icon fa-github}" Header="{ext:Locale MenuBarHelpFaq}"
Tag="https://github.com/GreemDev/Ryujinx/wiki/FAQ-and-Troubleshooting" Icon="{ext:Icon fa-github}"
ToolTip.Tip="{ext:Locale MenuBarHelpFaqTooltip}" /> Tag="https://github.com/GreemDev/Ryujinx/wiki/FAQ-and-Troubleshooting"
<MenuItem ToolTip.Tip="{ext:Locale MenuBarHelpFaqTooltip}" />
Click="MenuItem_OnClick" <MenuItem
Header="{ext:Locale MenuBarHelpSetup}" Click="MenuItem_OnClick"
Icon="{ext:Icon fa-github}" Header="{ext:Locale MenuBarHelpSetup}"
Tag="https://github.com/GreemDev/Ryujinx/wiki/Ryujinx-Setup-&amp;-Configuration-Guide" Icon="{ext:Icon fa-github}"
ToolTip.Tip="{ext:Locale MenuBarHelpSetupTooltip}" /> Tag="https://github.com/GreemDev/Ryujinx/wiki/Ryujinx-Setup-&amp;-Configuration-Guide"
<MenuItem ToolTip.Tip="{ext:Locale MenuBarHelpSetupTooltip}" />
Click="MenuItem_OnClick" <MenuItem
Header="{ext:Locale MenuBarHelpMultiplayer}" Click="MenuItem_OnClick"
Icon="{ext:Icon fa-github}" Header="{ext:Locale MenuBarHelpMultiplayer}"
Tag="https://github.com/GreemDev/Ryujinx/wiki/Multiplayer%E2%80%90(LDN%E2%80%90Local%E2%80%90Wireless)%E2%80%90Guide" Icon="{ext:Icon fa-github}"
ToolTip.Tip="{ext:Locale MenuBarHelpMultiplayerTooltip}" /> Tag="https://github.com/GreemDev/Ryujinx/wiki/Multiplayer%E2%80%90(LDN%E2%80%90Local%E2%80%90Wireless)%E2%80%90Guide"
<Separator /> ToolTip.Tip="{ext:Locale MenuBarHelpMultiplayerTooltip}" />
<MenuItem </MenuItem>
Click="OpenAboutWindow"
Header="{ext:Locale MenuBarHelpAbout}"
Icon="{ext:Icon fa-solid fa-circle-info}"
ToolTip.Tip="{ext:Locale OpenAboutTooltip}" />
</MenuItem> </MenuItem>
</Menu> </Menu>
</DockPanel> </DockPanel>
@@ -52,7 +52,7 @@ namespace Ryujinx.Ava.UI.Views.Main
private void AspectRatioStatus_OnClick(object sender, RoutedEventArgs e) private void AspectRatioStatus_OnClick(object sender, RoutedEventArgs e)
{ {
AspectRatio aspectRatio = ConfigurationState.Instance.Graphics.AspectRatio.Value; AspectRatio aspectRatio = ConfigurationState.Instance.Graphics.AspectRatio.Value;
ConfigurationState.Instance.Graphics.AspectRatio.Value = (int)aspectRatio + 1 > Enum.GetNames(typeof(AspectRatio)).Length - 1 ? AspectRatio.Fixed4x3 : aspectRatio + 1; ConfigurationState.Instance.Graphics.AspectRatio.Value = (int)aspectRatio + 1 > Enum.GetNames<AspectRatio>().Length - 1 ? AspectRatio.Fixed4x3 : aspectRatio + 1;
} }
private void Refresh_OnClick(object sender, RoutedEventArgs e) => Window.LoadApplications(); private void Refresh_OnClick(object sender, RoutedEventArgs e) => Window.LoadApplications();