aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon/Sdk/Settings/LanguageCode.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2024-01-29 18:45:40 -0300
committerGitHub <noreply@github.com>2024-01-29 22:45:40 +0100
commit4117c13377b51b83ff87b1d00393be1a5ab5bfff (patch)
treec59181e229947070b76c20d88e7b9cbba314a4e9 /src/Ryujinx.Horizon/Sdk/Settings/LanguageCode.cs
parent20a392ad552ce5cdbff1cb74f1d26d2f797cca31 (diff)
Migrate friends service to new IPC (#6174)1.1.1145
* Migrate friends service to new IPC * Add a note that the pointer buffer size and domain counts are wrong * Wrong length * Format whitespace * PR feedback * Fill in structs from PR feedback * Missed that one * Somehow forgot to save that one * Fill in enums from PR review * Language enum, NotificationTime * Format whitespace * Fix the warning
Diffstat (limited to 'src/Ryujinx.Horizon/Sdk/Settings/LanguageCode.cs')
-rw-r--r--src/Ryujinx.Horizon/Sdk/Settings/LanguageCode.cs63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/Ryujinx.Horizon/Sdk/Settings/LanguageCode.cs b/src/Ryujinx.Horizon/Sdk/Settings/LanguageCode.cs
new file mode 100644
index 00000000..dc971269
--- /dev/null
+++ b/src/Ryujinx.Horizon/Sdk/Settings/LanguageCode.cs
@@ -0,0 +1,63 @@
+using Ryujinx.Common.Memory;
+using System;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace Ryujinx.Horizon.Sdk.Settings
+{
+ [StructLayout(LayoutKind.Sequential, Size = 0x8, Pack = 0x1)]
+ struct LanguageCode
+ {
+ private static readonly string[] _languageCodes = new string[]
+ {
+ "ja",
+ "en-US",
+ "fr",
+ "de",
+ "it",
+ "es",
+ "zh-CN",
+ "ko",
+ "nl",
+ "pt",
+ "ru",
+ "zh-TW",
+ "en-GB",
+ "fr-CA",
+ "es-419",
+ "zh-Hans",
+ "zh-Hant",
+ "pt-BR"
+ };
+
+ public Array8<byte> Value;
+
+ public bool IsValid()
+ {
+ int length = Value.AsSpan().IndexOf((byte)0);
+ if (length < 0)
+ {
+ return false;
+ }
+
+ string str = Encoding.ASCII.GetString(Value.AsSpan()[..length]);
+
+ return _languageCodes.AsSpan().Contains(str);
+ }
+
+ public LanguageCode(Language language)
+ {
+ if ((uint)language >= _languageCodes.Length)
+ {
+ throw new ArgumentOutOfRangeException(nameof(language));
+ }
+
+ Value = new LanguageCode(_languageCodes[(int)language]).Value;
+ }
+
+ public LanguageCode(string strCode)
+ {
+ Encoding.ASCII.GetBytes(strCode, Value.AsSpan());
+ }
+ }
+}