diff options
| author | emmauss <emmausssss@gmail.com> | 2018-10-07 16:13:46 +0300 |
|---|---|---|
| committer | Thomas Guillemard <thog@protonmail.com> | 2018-10-07 15:13:46 +0200 |
| commit | caa181edf2c956a1433d3c2f8678231af52f9dad (patch) | |
| tree | 4d7297bb09e90541368132a92b5235eee4315832 /Ryujinx.HLE/HOS/SystemState | |
| parent | 5b8ccb717f225234ae97a2ef1673ca42833bd836 (diff) | |
Save Common implementation (#434)
* save common implementation
* remove zero userid check
* Renamed UserId to UInt128
* fix index in hex conversion
Diffstat (limited to 'Ryujinx.HLE/HOS/SystemState')
| -rw-r--r-- | Ryujinx.HLE/HOS/SystemState/SystemStateMgr.cs | 20 | ||||
| -rw-r--r-- | Ryujinx.HLE/HOS/SystemState/UserId.cs | 76 | ||||
| -rw-r--r-- | Ryujinx.HLE/HOS/SystemState/UserProfile.cs | 7 |
3 files changed, 15 insertions, 88 deletions
diff --git a/Ryujinx.HLE/HOS/SystemState/SystemStateMgr.cs b/Ryujinx.HLE/HOS/SystemState/SystemStateMgr.cs index 2a3c8288..3833ce9e 100644 --- a/Ryujinx.HLE/HOS/SystemState/SystemStateMgr.cs +++ b/Ryujinx.HLE/HOS/SystemState/SystemStateMgr.cs @@ -1,3 +1,4 @@ +using Ryujinx.HLE.Utilities; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -57,9 +58,10 @@ namespace Ryujinx.HLE.HOS.SystemState Profiles = new ConcurrentDictionary<string, UserProfile>(); - UserId DefaultUuid = new UserId("00000000000000000000000000000001"); + UInt128 DefaultUuid = new UInt128("00000000000000000000000000000001"); AddUser(DefaultUuid, "Player"); + OpenUser(DefaultUuid); } @@ -85,24 +87,24 @@ namespace Ryujinx.HLE.HOS.SystemState ActiveAudioOutput = AudioOutputs[2]; } - public void AddUser(UserId Uuid, string Name) + public void AddUser(UInt128 Uuid, string Name) { UserProfile Profile = new UserProfile(Uuid, Name); - Profiles.AddOrUpdate(Uuid.UserIdHex, Profile, (Key, Old) => Profile); + Profiles.AddOrUpdate(Uuid.ToString(), Profile, (Key, Old) => Profile); } - public void OpenUser(UserId Uuid) + public void OpenUser(UInt128 Uuid) { - if (Profiles.TryGetValue(Uuid.UserIdHex, out UserProfile Profile)) + if (Profiles.TryGetValue(Uuid.ToString(), out UserProfile Profile)) { (LastOpenUser = Profile).AccountState = OpenCloseState.Open; } } - public void CloseUser(UserId Uuid) + public void CloseUser(UInt128 Uuid) { - if (Profiles.TryGetValue(Uuid.UserIdHex, out UserProfile Profile)) + if (Profiles.TryGetValue(Uuid.ToString(), out UserProfile Profile)) { Profile.AccountState = OpenCloseState.Closed; } @@ -113,9 +115,9 @@ namespace Ryujinx.HLE.HOS.SystemState return Profiles.Count; } - internal bool TryGetUser(UserId Uuid, out UserProfile Profile) + internal bool TryGetUser(UInt128 Uuid, out UserProfile Profile) { - return Profiles.TryGetValue(Uuid.UserIdHex, out Profile); + return Profiles.TryGetValue(Uuid.ToString(), out Profile); } internal IEnumerable<UserProfile> GetAllUsers() diff --git a/Ryujinx.HLE/HOS/SystemState/UserId.cs b/Ryujinx.HLE/HOS/SystemState/UserId.cs deleted file mode 100644 index 1e7c53dd..00000000 --- a/Ryujinx.HLE/HOS/SystemState/UserId.cs +++ /dev/null @@ -1,76 +0,0 @@ -using Ryujinx.HLE.Utilities; -using System; -using System.IO; -using System.Linq; - -namespace Ryujinx.HLE.HOS.SystemState -{ - public struct UserId - { - public string UserIdHex { get; private set; } - - public byte[] Bytes { get; private set; } - - public UserId(long Low, long High) - { - if ((Low | High) == 0) - { - throw new ArgumentException("Zero is not a valid user id!"); - } - - byte[] Bytes = new byte[16]; - - int Index = Bytes.Length; - - void WriteBytes(long Value) - { - for (int Byte = 0; Byte < 8; Byte++) - { - Bytes[--Index] = (byte)(Value >> Byte * 8); - } - } - - WriteBytes(Low); - WriteBytes(High); - - UserIdHex = string.Empty; - - foreach (byte Byte in Bytes) - { - UserIdHex += Byte.ToString("X2"); - } - - this.Bytes = Bytes; - } - - public UserId(string UserIdHex) - { - if (UserIdHex == null || UserIdHex.Length != 32 || !UserIdHex.All("0123456789abcdefABCDEF".Contains)) - { - throw new ArgumentException("Invalid user id!", nameof(UserIdHex)); - } - - if (UserIdHex == "00000000000000000000000000000000") - { - throw new ArgumentException("Zero is not a valid user id!", nameof(UserIdHex)); - } - - this.UserIdHex = UserIdHex.ToUpper(); - - Bytes = StringUtils.HexToBytes(UserIdHex); - } - - internal void Write(BinaryWriter Writer) - { - for (int Index = Bytes.Length - 1; Index >= 0; Index--) - { - Writer.Write(Bytes[Index]); - } - } - - public override string ToString() - { - return UserIdHex; - } - } -}
\ No newline at end of file diff --git a/Ryujinx.HLE/HOS/SystemState/UserProfile.cs b/Ryujinx.HLE/HOS/SystemState/UserProfile.cs index 63852cdf..e08bc48a 100644 --- a/Ryujinx.HLE/HOS/SystemState/UserProfile.cs +++ b/Ryujinx.HLE/HOS/SystemState/UserProfile.cs @@ -1,4 +1,5 @@ -using System; +using Ryujinx.HLE.Utilities; +using System; namespace Ryujinx.HLE.HOS.SystemState { @@ -6,7 +7,7 @@ namespace Ryujinx.HLE.HOS.SystemState { private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); - public UserId Uuid { get; private set; } + public UInt128 Uuid { get; private set; } public string Name { get; private set; } @@ -15,7 +16,7 @@ namespace Ryujinx.HLE.HOS.SystemState public OpenCloseState AccountState { get; set; } public OpenCloseState OnlinePlayState { get; set; } - public UserProfile(UserId Uuid, string Name) + public UserProfile(UInt128 Uuid, string Name) { this.Uuid = Uuid; this.Name = Name; |
