123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- using UnityEngine;
- using UnityEngine.Events;
- using System.Collections;
- using System.Collections.Generic;
- using System.Xml;
- using Sfs2X.Entities.Data;
- public class UAVManager
- {
- public UnityEvent EquipedUAVChanged;
- private Dictionary<int, UAVData> dataDict;
- private Dictionary<int, UAVData> dataEquipDict;
- private List<UAVData> dataList;
- private List<Equipment> inventoryList;
- private Dictionary<int, UAVItem> inventoryDict;
- public UAVManager()
- {
- EquipedUAVChanged = new UnityEvent ();
- dataDict = new Dictionary<int, UAVData>();
- dataEquipDict = new Dictionary<int, UAVData> ();
- dataList = new List<UAVData>();
- InitByXML("XML/Config/All/uav_config");
- inventoryList = new List<Equipment> ();
- inventoryDict = new Dictionary<int, UAVItem> ();
- }
- 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++)
- {
- UAVData data = new UAVData(nodeList[i] as XmlElement);
- if(!dataDict.ContainsKey(data.id))
- {
- dataDict.Add(data.id, data);
- dataList.Add(data);
- dataEquipDict.Add (data.equip, data);
- }
- else
- Debuger.LogError("uav " + data.id + " has duplicate");
- }
- }
- private static UAVManager instance;
- public static UAVManager GetInstance()
- {
- if(instance == null)
- {
- instance = new UAVManager();
- }
- return instance;
- }
- public UAVData GetData(int id)
- {
- if(dataDict.ContainsKey(id))
- return dataDict[id];
- Debuger.LogWarning("can not find uav["+id+"]");
- return null;
- }
- public UAVData GetDataByEquipId(int equipId)
- {
- if (dataEquipDict.ContainsKey (equipId))
- return dataEquipDict [equipId];
- Debuger.LogWarning ("can not find uav data by equip["+equipId+"]");
- return null;
- }
- public void ClearInventory()
- {
- inventoryDict.Clear ();
- inventoryList.Clear ();
- }
- private UAVItem equipedItem;
- public UAVItem GetEquipedItem()
- {
- return equipedItem;
- }
- public void SetEquipedItem(UAVItem uavItem)
- {
- this.equipedItem = uavItem;
- EquipedUAVChanged.Invoke ();
- }
- public UAVItem AddUAVItem(Equipment equipment)
- {
- UAVData uavData = GetDataByEquipId (equipment.GetData().id);
- UAVItem item = new UAVItem (uavData, equipment);
- inventoryDict.Add (equipment.GetData().id, item);
- inventoryList.Add (equipment);
- if (equipedItem == null)
- SetEquipedItem (item);
- return item;
- }
- public UAVItem GetUAVItem(int equipId)
- {
- UAVItem uavItem = null;
- inventoryDict.TryGetValue (equipId, out uavItem);
- return uavItem;
- }
- public List<Equipment> GetInventoryList()
- {
- return inventoryList;
- }
- public static ISFSObject GetMyUAVSFSData()
- {
- return GetUAVSFSData (UAVManager.GetInstance().GetEquipedItem());
- }
- public static ISFSObject GetUAVSFSData(UAVItem item)
- {
- ISFSObject data = new SFSObject ();
- if(item != null)
- {
- data.PutInt ("t", item.GetData ().id);
- data.PutInt ("l", item.GetEquipment().GetLevel ());
- }
- return data;
- }
- public static UAVItem ParseUAVItem(ISFSObject data)
- {
- if(data != null && data.ContainsKey("t"))
- {
- int itemId = data.GetInt ("t");
- int level = data.GetInt ("l");
- UAVData uavData = UAVManager.GetInstance ().GetData (itemId);
- Equipment equipment = new Equipment (0, EquipManager.GetInstance ().GetData (uavData.equip));
- equipment.SetLevel (level);
- UAVItem item = new UAVItem (uavData, equipment);
- return item;
- }
- return null;
- }
- }
|