using UnityEngine; using UnityEngine.Events; using System.Collections; using System.Collections.Generic; using LitJson; public class UserCache { public static UserDataEvent UserDataGot = new UserDataEvent (); private static Dictionary cache = new Dictionary(); public static UserData Add(JsonData data) { int userId = JsonUtil.ToInt(data["id"]); // if (userId == Session.GetInstance ().myUserData.id) // return Session.GetInstance ().myUserData; UserData userData = null; cache.TryGetValue (userId, out userData); if(userData == null) { userData = new UserData (); cache.Add (userId, userData); } userData.id = userId; userData.nick = UserData.NickFormat (data ["nick"], userId); userData.rank = JsonUtil.ToInt (data["rank"]); userData.clanId = JsonUtil.ToInt (data["clan"]); userData.win = JsonUtil.ToInt (data["win"]); userData.lose = JsonUtil.ToInt (data["lose"]); return userData; } public static void GetUser(int id) { if(id == Session.GetInstance().myUserData.id) { UserDataGot.Invoke(Session.GetInstance().myUserData); return; } UserData userData = null; cache.TryGetValue (id, out userData); if (userData == null) { UserRequest.Info (id).ResultEvent.AddListener ((bool success, JsonData data) => { if(success) { UserData ud = UserCache.Add(data); UserDataGot.Invoke (ud); } }); } else { UserDataGot.Invoke (userData); } } public static string GetNick(int id) { if(id == Session.GetInstance().myUserData.id) { return Session.GetInstance().myUserData.nick; } UserData userData = null; cache.TryGetValue (id, out userData); if (userData != null) { return userData.nick; } return UserData.NickFormat ("", id); } } public class UserDataEvent : UnityEvent{}