using UnityEngine; using System.Collections; using System.Collections.Generic; using LitJson; public class ClanManager { private Dictionary cache; private static ClanManager instance; public static ClanManager GetInstance() { if (instance == null) instance = new ClanManager (); return instance; } public ClanManager() { cache = new Dictionary (); } 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 (); for(int i=0; i clanData); public void FindClan(string key, FindClanDataDelegate callBack) { ClanRequest.Find(key).ResultEvent.AddListener((bool success, JsonData data)=>{ List list = new List(); if(success) { for(int i=0; i