UserCache.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using UnityEngine;
  2. using UnityEngine.Events;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using LitJson;
  6. public class UserCache
  7. {
  8. public static UserDataEvent UserDataGot = new UserDataEvent ();
  9. private static Dictionary<int, UserData> cache = new Dictionary<int, UserData>();
  10. public static UserData Add(JsonData data)
  11. {
  12. int userId = JsonUtil.ToInt(data["id"]);
  13. // if (userId == Session.GetInstance ().myUserData.id)
  14. // return Session.GetInstance ().myUserData;
  15. UserData userData = null;
  16. cache.TryGetValue (userId, out userData);
  17. if(userData == null)
  18. {
  19. userData = new UserData ();
  20. cache.Add (userId, userData);
  21. }
  22. userData.id = userId;
  23. userData.nick = UserData.NickFormat (data ["nick"], userId);
  24. userData.rank = JsonUtil.ToInt (data["rank"]);
  25. userData.clanId = JsonUtil.ToInt (data["clan"]);
  26. userData.win = JsonUtil.ToInt (data["win"]);
  27. userData.lose = JsonUtil.ToInt (data["lose"]);
  28. return userData;
  29. }
  30. public static void GetUser(int id)
  31. {
  32. if(id == Session.GetInstance().myUserData.id)
  33. {
  34. UserDataGot.Invoke(Session.GetInstance().myUserData);
  35. return;
  36. }
  37. UserData userData = null;
  38. cache.TryGetValue (id, out userData);
  39. if (userData == null) {
  40. UserRequest.Info (id).ResultEvent.AddListener ((bool success, JsonData data) => {
  41. if(success)
  42. {
  43. UserData ud = UserCache.Add(data);
  44. UserDataGot.Invoke (ud);
  45. }
  46. });
  47. } else {
  48. UserDataGot.Invoke (userData);
  49. }
  50. }
  51. public static string GetNick(int id)
  52. {
  53. if(id == Session.GetInstance().myUserData.id)
  54. {
  55. return Session.GetInstance().myUserData.nick;
  56. }
  57. UserData userData = null;
  58. cache.TryGetValue (id, out userData);
  59. if (userData != null) {
  60. return userData.nick;
  61. }
  62. return UserData.NickFormat ("", id);
  63. }
  64. }
  65. public class UserDataEvent : UnityEvent<UserData>{}