mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-09-15 06:25:13 +00:00
Move solution and projects to src
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
using Ryujinx.Common.Configuration;
|
||||
using Ryujinx.Common.Logging;
|
||||
using Ryujinx.Common.Utilities;
|
||||
using Ryujinx.HLE.HOS.Services.Account.Acc.Types;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
||||
{
|
||||
class AccountSaveDataManager
|
||||
{
|
||||
private readonly string _profilesJsonPath = Path.Join(AppDataManager.BaseDirPath, "system", "Profiles.json");
|
||||
|
||||
private static readonly ProfilesJsonSerializerContext SerializerContext = new(JsonHelper.GetDefaultSerializerOptions());
|
||||
|
||||
public UserId LastOpened { get; set; }
|
||||
|
||||
public AccountSaveDataManager(ConcurrentDictionary<string, UserProfile> profiles)
|
||||
{
|
||||
// TODO: Use 0x8000000000000010 system savedata instead of a JSON file if needed.
|
||||
|
||||
if (File.Exists(_profilesJsonPath))
|
||||
{
|
||||
try
|
||||
{
|
||||
ProfilesJson profilesJson = JsonHelper.DeserializeFromFile(_profilesJsonPath, SerializerContext.ProfilesJson);
|
||||
|
||||
foreach (var profile in profilesJson.Profiles)
|
||||
{
|
||||
UserProfile addedProfile = new UserProfile(new UserId(profile.UserId), profile.Name, profile.Image, profile.LastModifiedTimestamp);
|
||||
|
||||
profiles.AddOrUpdate(profile.UserId, addedProfile, (key, old) => addedProfile);
|
||||
}
|
||||
|
||||
LastOpened = new UserId(profilesJson.LastOpened);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Error?.Print(LogClass.Application, $"Failed to parse {_profilesJsonPath}: {e.Message} Loading default profile!");
|
||||
|
||||
LastOpened = AccountManager.DefaultUserId;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LastOpened = AccountManager.DefaultUserId;
|
||||
}
|
||||
}
|
||||
|
||||
public void Save(ConcurrentDictionary<string, UserProfile> profiles)
|
||||
{
|
||||
ProfilesJson profilesJson = new ProfilesJson()
|
||||
{
|
||||
Profiles = new List<UserProfileJson>(),
|
||||
LastOpened = LastOpened.ToString()
|
||||
};
|
||||
|
||||
foreach (var profile in profiles)
|
||||
{
|
||||
profilesJson.Profiles.Add(new UserProfileJson()
|
||||
{
|
||||
UserId = profile.Value.UserId.ToString(),
|
||||
Name = profile.Value.Name,
|
||||
AccountState = profile.Value.AccountState,
|
||||
OnlinePlayState = profile.Value.OnlinePlayState,
|
||||
LastModifiedTimestamp = profile.Value.LastModifiedTimestamp,
|
||||
Image = profile.Value.Image,
|
||||
});
|
||||
}
|
||||
|
||||
JsonHelper.SerializeToFile(_profilesJsonPath, profilesJson, SerializerContext.ProfilesJson);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user