using IchniOnline.Online.Models; using TapSDK.Login; using UnityEngine; namespace IchniOnline.Online.Logic { /// /// 登录缓存的读写管理器。所有方法均为静态,可在任意位置调用。 /// 使用 ES3 进行本地持久化。 /// public static class LoginCacheManager { private const string ES3_KEY = "Ichni_LoginCache"; /// /// 本地是否存在有效的登录缓存 /// public static bool HasCachedLogin { get { if (!ES3.KeyExists(ES3_KEY)) return false; var data = ES3.Load(ES3_KEY); return data != null && data.IsValid; } } /// /// 获取缓存的登录数据,无缓存返回 null /// public static LoginCacheData CachedData { get { if (!ES3.KeyExists(ES3_KEY)) return null; return ES3.Load(ES3_KEY); } } /// /// 将 TapTap 登录结果写入本地缓存 /// public static void SaveFromTapTapAccount(TapTapAccount account) { if (account == null) { Debug.LogWarning("[LoginCacheManager] account 为 null,跳过缓存"); return; } var data = new LoginCacheData( account.openId, account.unionId, account.name, account.avatar, account.email ); ES3.Save(ES3_KEY, data); Debug.Log($"[LoginCacheManager] 已缓存登录数据,openId={data.openId}"); } /// /// 写入模拟数据(供编辑器工具使用) /// public static void SaveMockData() { var data = new LoginCacheData( "mock_openid_001", "mock_unionid_001", "MockUser", "", "mock@test.com" ); ES3.Save(ES3_KEY, data); Debug.Log($"[LoginCacheManager] 已写入模拟缓存数据"); } /// /// 清除本地登录缓存 /// public static void Clear() { if (ES3.KeyExists(ES3_KEY)) { ES3.DeleteKey(ES3_KEY); Debug.Log("[LoginCacheManager] 已清除登录缓存"); } } } }