ClanManager.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using LitJson;
  5. public class ClanManager
  6. {
  7. private Dictionary<int, ClanData> cache;
  8. private static ClanManager instance;
  9. public static ClanManager GetInstance()
  10. {
  11. if (instance == null)
  12. instance = new ClanManager ();
  13. return instance;
  14. }
  15. public ClanManager()
  16. {
  17. cache = new Dictionary<int, ClanData> ();
  18. }
  19. public delegate void ClanDataDelegate(ClanData clanData);
  20. public void GetClan(int id, ClanDataDelegate callBack)
  21. {
  22. ClanData clanData = null;
  23. cache.TryGetValue (id, out clanData);
  24. if (clanData != null && clanData.MenberInitialized()) {
  25. callBack (clanData);
  26. } else {
  27. ClanRequest.Info (id).ResultEvent.AddListener((bool success, JsonData data)=>{
  28. if(success)
  29. {
  30. clanData = AddClan(data);
  31. callBack (clanData);
  32. }
  33. else
  34. {
  35. callBack (null);
  36. }
  37. });
  38. }
  39. }
  40. public ClanData AddClan(JsonData data)
  41. {
  42. int clanId = JsonUtil.ToInt (data["id"]);
  43. bool isNew = false;
  44. ClanData clanData = null;
  45. cache.TryGetValue (clanId, out clanData);
  46. if (clanData == null) {
  47. clanData = new ClanData ();
  48. isNew = true;
  49. }
  50. clanData.id = clanId;
  51. clanData.name = WWW.UnEscapeURL(data ["name"].ToString ());
  52. clanData.description = WWW.UnEscapeURL(data ["desc"].ToString ());
  53. clanData.founder = JsonUtil.ToInt (data["founder"]);
  54. clanData.limit = ClanData.GetLimitByCode(JsonUtil.ToInt (data["limit"]));
  55. clanData.badge = JsonUtil.ToInt (data["badge"]);
  56. clanData.rank = JsonUtil.ToInt (data["rank"]);
  57. clanData.maxAmount = JsonUtil.ToInt (data["max"]);
  58. clanData.amount = JsonUtil.ToInt (data["amount"]);
  59. if(JsonUtil.ContainKey(data, "menber"))
  60. {
  61. JsonData userJson = data["menber"];
  62. clanData.userList = new List<UserData> ();
  63. for(int i=0; i<userJson.Count; i++)
  64. {
  65. UserData userData = UserCache.Add(userJson[i]);
  66. clanData.userList.Add (userData);
  67. }
  68. }
  69. if (isNew)
  70. cache.Add (clanId, clanData);
  71. return clanData;
  72. }
  73. public void RemoveClan(int clanId)
  74. {
  75. cache.Remove (clanId);
  76. }
  77. public delegate void FindClanDataDelegate(List<ClanData> clanData);
  78. public void FindClan(string key, FindClanDataDelegate callBack)
  79. {
  80. ClanRequest.Find(key).ResultEvent.AddListener((bool success, JsonData data)=>{
  81. List<ClanData> list = new List<ClanData>();
  82. if(success)
  83. {
  84. for(int i=0; i<data.Count; i++)
  85. {
  86. ClanData clanData = AddClan(data[i]);
  87. list.Add(clanData);
  88. }
  89. }
  90. callBack (list);
  91. });
  92. }
  93. }