123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- using System.Xml;
- using LitJson;
- public class HaloManager {
- private Dictionary<int, HaloData> dataDict;
- private List<HaloData> dataList;
- private HaloData defaultData;
- private int startEquipedId;
- private int currentEquipedId;
-
- public HaloManager()
- {
- dataDict = new Dictionary<int, HaloData>();
- InitByXML("XML/Config/All/halo_config");
- }
-
- public void InitByXML(string path)
- {
- TextAsset textAsset = (TextAsset)Resources.Load(path);
-
- XmlDocument xml = new XmlDocument();
- xml.LoadXml(textAsset.text);
-
- XmlNode mapNode = xml.SelectSingleNode("data");
-
- XmlNodeList nodeList = mapNode.SelectNodes("item");
- for(int i=0; i<nodeList.Count; i++)
- {
- HaloData data = new HaloData(nodeList[i]);
- if(!dataDict.ContainsKey(data.id))
- {
- dataDict.Add(data.id, data);
- if(data.id == 0)
- {
- defaultData = data;
- defaultData.bought = true;
- }
- }
- else
- Debuger.LogError("buff " + data.id + " has duplicate");
- }
- }
-
- private static HaloManager instance;
- public static HaloManager GetInstance()
- {
- if(instance == null)
- {
- instance = new HaloManager();
- }
- return instance;
- }
- public HaloData GetData(int id)
- {
- if(dataDict.ContainsKey(id))
- return dataDict[id];
- return defaultData;
- }
- public int GetCurrentEquipedId()
- {
- return currentEquipedId;
- }
- public void InitDataState(JsonData json)
- {
- for(int i=0; i<json.Count; i++)
- {
- JsonData o = json[i];
- int itemId = JsonUtil.ToInt(o["itemid"]);
- int equiped = JsonUtil.ToInt(o["equiped"]);
- if(equiped > 0)
- Equip(itemId, equiped);
- Bought(itemId);
- }
- if (currentEquipedId == 0)
- Equip (defaultData.id, 1);
- }
- public void RequestDataList(CallBackUtil.SimpleCallBack callBack)
- {
- if(dataList == null)
- Session.GetInstance().GetNetworkManager().ShopList(BuyUtil.ItemType.Halo, callBack);
- else
- callBack();
- }
- public List<HaloData> GetDataList()
- {
- return dataList;
- }
- public void SetDataList(JsonData json)
- {
- this.dataList = new List<HaloData>();
- dataList.Add (defaultData);
- for(int i=0; i<json.Count; i++)
- {
- JsonData o = json[i];
- int itemId = JsonUtil.ToInt(o["itemid"]);
- int currency = JsonUtil.ToInt(o["currency"]);
- int price = JsonUtil.ToInt(o["price"]);
- HaloData data = GetData(itemId);
- data.currency = currency;
- data.price = price;
- dataList.Add(data);
- }
- }
- public void Bought(int id)
- {
- HaloData data = GetData(id);
- if(data != null)
- data.bought = true;
- }
- public void RecordStartEquipId()
- {
- startEquipedId = currentEquipedId;
- }
- public void SyncEquipId()
- {
- if(startEquipedId != currentEquipedId)
- {
- HaloData data = GetData(currentEquipedId);
- Session.GetInstance().GetNetworkManager().Equip(BuyUtil.ItemType.Halo, data.id, data.equiped);
- startEquipedId = currentEquipedId;
- }
- }
- public void Equip(int id, int value)
- {
- HaloData data = GetData(id);
- data.equiped = value;
- if(value != 0)
- {
- currentEquipedId = data.id;
- }
- else
- {
- currentEquipedId = defaultData.id;
- }
- if(dataList != null)
- {
- for(int i=0; i<dataList.Count; i++)
- {
- data = dataList[i];
- if(data.id != id)
- {
- data.equiped = 0;
- }
- }
- }
- }
- public GameObject CreateHaloObjById(int id)
- {
- HaloData data = GetData(id);
- GameObject prefab = Resources.Load<GameObject>("Prefabs/Halo/"+data.model);
- GameObject haloObj = GameObject.Instantiate<GameObject>(prefab);
- haloObj.AddComponent<HaloObj>();
- return haloObj;
- }
- }
|