diff options
author | gdkchan <gab.dark.100@gmail.com> | 2024-01-29 18:45:40 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-29 22:45:40 +0100 |
commit | 4117c13377b51b83ff87b1d00393be1a5ab5bfff (patch) | |
tree | c59181e229947070b76c20d88e7b9cbba314a4e9 /src/Ryujinx.Horizon/Sdk/Settings/LanguageCode.cs | |
parent | 20a392ad552ce5cdbff1cb74f1d26d2f797cca31 (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.cs | 63 |
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()); + } + } +} |