Files
bansonic_beta_main/Assets/scripts/_runtimecache/RecentPlayHistoryStore.cs
T

68 lines
1.8 KiB
C#

using System.Collections.Generic;
using UnityEngine;
public static class RecentPlayHistoryStore
{
private const string Category = "recent_play_history";
private const string Key = "runs_v1";
private const int MaxRecordCount = 100;
private const string RecoverySlotKey = "recent_play_history_runs_v1";
public static IReadOnlyList<RecentPlayRecord> GetRecords()
{
return LoadPayload().records;
}
public static void Push(RecentPlayRecord record)
{
if (record == null)
{
return;
}
var payload = LoadPayload();
if (payload.records == null)
{
payload.records = new List<RecentPlayRecord>();
}
payload.records.Insert(0, record);
if (payload.records.Count > MaxRecordCount)
{
payload.records.RemoveRange(MaxRecordCount, payload.records.Count - MaxRecordCount);
}
SecureSaveVault.SaveJson(Category, Key, payload);
LocalRecoveryMirror.SaveJson(RecoverySlotKey, payload);
}
public static void Clear()
{
SecureSaveVault.Delete(Category, Key);
LocalRecoveryMirror.DeleteSlot(RecoverySlotKey);
}
private static RecentPlayHistoryPayload LoadPayload()
{
RecentPlayHistoryPayload payload;
if (!SecureSaveVault.TryLoadJson(Category, Key, out payload) || payload == null)
{
if (!LocalRecoveryMirror.TryLoadJson(RecoverySlotKey, out payload) || payload == null)
{
payload = new RecentPlayHistoryPayload();
}
else
{
SecureSaveVault.SaveJson(Category, Key, payload);
}
}
if (payload.records == null)
{
payload.records = new List<RecentPlayRecord>();
}
return payload;
}
}