123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- using LitJson;
- public class ClanManager
- {
- private Dictionary<int, ClanData> cache;
- private static ClanManager instance;
- public static ClanManager GetInstance()
- {
- if (instance == null)
- instance = new ClanManager ();
- return instance;
- }
- public ClanManager()
- {
- cache = new Dictionary<int, ClanData> ();
- }
- public delegate void ClanDataDelegate(ClanData clanData);
- public void GetClan(int id, ClanDataDelegate callBack)
- {
- ClanData clanData = null;
- cache.TryGetValue (id, out clanData);
- if (clanData != null && clanData.MenberInitialized()) {
- callBack (clanData);
- } else {
- ClanRequest.Info (id).ResultEvent.AddListener((bool success, JsonData data)=>{
- if(success)
- {
- clanData = AddClan(data);
- callBack (clanData);
- }
- else
- {
- callBack (null);
- }
- });
- }
- }
- public ClanData AddClan(JsonData data)
- {
- int clanId = JsonUtil.ToInt (data["id"]);
- bool isNew = false;
- ClanData clanData = null;
- cache.TryGetValue (clanId, out clanData);
- if (clanData == null) {
- clanData = new ClanData ();
- isNew = true;
- }
-
- clanData.id = clanId;
- clanData.name = WWW.UnEscapeURL(data ["name"].ToString ());
- clanData.description = WWW.UnEscapeURL(data ["desc"].ToString ());
- clanData.founder = JsonUtil.ToInt (data["founder"]);
- clanData.limit = ClanData.GetLimitByCode(JsonUtil.ToInt (data["limit"]));
- clanData.badge = JsonUtil.ToInt (data["badge"]);
- clanData.rank = JsonUtil.ToInt (data["rank"]);
- clanData.maxAmount = JsonUtil.ToInt (data["max"]);
- clanData.amount = JsonUtil.ToInt (data["amount"]);
- if(JsonUtil.ContainKey(data, "menber"))
- {
- JsonData userJson = data["menber"];
- clanData.userList = new List<UserData> ();
- for(int i=0; i<userJson.Count; i++)
- {
- UserData userData = UserCache.Add(userJson[i]);
- clanData.userList.Add (userData);
- }
- }
- if (isNew)
- cache.Add (clanId, clanData);
- return clanData;
- }
- public void RemoveClan(int clanId)
- {
- cache.Remove (clanId);
- }
- public delegate void FindClanDataDelegate(List<ClanData> clanData);
- public void FindClan(string key, FindClanDataDelegate callBack)
- {
- ClanRequest.Find(key).ResultEvent.AddListener((bool success, JsonData data)=>{
- List<ClanData> list = new List<ClanData>();
- if(success)
- {
- for(int i=0; i<data.Count; i++)
- {
- ClanData clanData = AddClan(data[i]);
- list.Add(clanData);
- }
- }
- callBack (list);
- });
- }
- }
|