|
@@ -1,4 +1,5 @@
|
|
|
using UnityEngine;
|
|
|
+using UnityEngine.Events;
|
|
|
using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Xml;
|
|
@@ -7,17 +8,28 @@ using LitJson;
|
|
|
public class EquipManager
|
|
|
{
|
|
|
|
|
|
- private Dictionary<int, EquipData> dataDict;
|
|
|
+ public UnityEvent InventoryUpdate;
|
|
|
|
|
|
+ private Dictionary<int, EquipData> dataDict;
|
|
|
private Dictionary<int, EquipedData> equipedDict;
|
|
|
|
|
|
private List<Equipment> inventoryList;
|
|
|
- public List<Equipment> hpList;
|
|
|
- public List<Equipment> dmgList;
|
|
|
- public List<Equipment> moveList;
|
|
|
+ private List<Equipment> hpList;
|
|
|
+ private List<Equipment> dmgList;
|
|
|
+ private List<Equipment> moveList;
|
|
|
+
|
|
|
+ private bool m_Initialized;
|
|
|
+ public bool initialized
|
|
|
+ {
|
|
|
+ get{
|
|
|
+ return m_Initialized;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
public EquipManager()
|
|
|
{
|
|
|
+ InventoryUpdate = new UnityEvent ();
|
|
|
+
|
|
|
dataDict = new Dictionary<int, EquipData>();
|
|
|
InitByXML("XML/Config/All/equip_config");
|
|
|
|
|
@@ -27,8 +39,6 @@ public class EquipManager
|
|
|
hpList = new List<Equipment> ();
|
|
|
dmgList = new List<Equipment> ();
|
|
|
moveList = new List<Equipment> ();
|
|
|
-
|
|
|
- InitEquiped ();
|
|
|
}
|
|
|
|
|
|
public void InitByXML(string path)
|
|
@@ -51,9 +61,39 @@ public class EquipManager
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public EquipData GetData(int id)
|
|
|
+ {
|
|
|
+ EquipData data = null;
|
|
|
+ dataDict.TryGetValue (id, out data);
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
- public void InitEquipInventory(JsonData jsonArr)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public void RequestInventory()
|
|
|
+ {
|
|
|
+ if (m_Initialized) {
|
|
|
+ InventoryUpdate.Invoke ();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ EquipRequest.Inventory ().ResultEvent.AddListener ((bool success, JsonData data)=>{
|
|
|
+ if(success)
|
|
|
+ {
|
|
|
+ InitEquipInventory(data);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private void InitEquipInventory(JsonData jsonArr)
|
|
|
{
|
|
|
inventoryList.Clear ();
|
|
|
hpList.Clear ();
|
|
@@ -64,27 +104,64 @@ public class EquipManager
|
|
|
{
|
|
|
JsonData data = jsonArr [i];
|
|
|
int id = JsonUtil.ToInt (data["id"]);
|
|
|
+ int itemId = JsonUtil.ToInt (data["item_id"]);
|
|
|
int level = JsonUtil.ToInt (data["level"]);
|
|
|
int count = JsonUtil.ToInt (data["count"]);
|
|
|
|
|
|
- Equipment equipment = new Equipment (GetData (id));
|
|
|
+ Equipment equipment = new Equipment (id, GetData (itemId));
|
|
|
equipment.SetCount (count);
|
|
|
equipment.SetLevel (level);
|
|
|
+ AddEquipment (equipment);
|
|
|
+ }
|
|
|
+
|
|
|
+ SortRecommand ();
|
|
|
+ InitEquiped ();
|
|
|
+
|
|
|
+ InventoryUpdate.Invoke ();
|
|
|
+ }
|
|
|
|
|
|
-// equipment.SetCount (Random.Range(0, 10));
|
|
|
-// equipment.SetLevel (Random.Range(1, 5));
|
|
|
+ public Equipment GetEquipment(int id)
|
|
|
+ {
|
|
|
+ for(int i=0; i<inventoryList.Count; i++)
|
|
|
+ {
|
|
|
+ Equipment equipment = inventoryList [i];
|
|
|
+ if(equipment.GetId() == id)
|
|
|
+ {
|
|
|
+ return equipment;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
|
|
|
- inventoryList.Add (equipment);
|
|
|
+ public void RewardEquipment(int id, int itemId, int count)
|
|
|
+ {
|
|
|
+ bool isNew = false;
|
|
|
+ Equipment equipment = GetEquipment (id);
|
|
|
+ if(equipment == null)
|
|
|
+ {
|
|
|
+ equipment = new Equipment (id, GetData (itemId));
|
|
|
+ equipment.SetLevel (1);
|
|
|
+ isNew = true;
|
|
|
+ }
|
|
|
+ equipment.SetCount (count);
|
|
|
+ AddEquipment (equipment);
|
|
|
|
|
|
- if (equipment.HasHpProperty ())
|
|
|
- hpList.Add (equipment);
|
|
|
- if (equipment.HasDamageProperty ())
|
|
|
- dmgList.Add (equipment);
|
|
|
- if (equipment.HasMoveProperty ())
|
|
|
- moveList.Add (equipment);
|
|
|
+ if(isNew)
|
|
|
+ {
|
|
|
+ RefreshAllRecommandEquiped ();
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- SortRecommand ();
|
|
|
+ private void AddEquipment(Equipment equipment)
|
|
|
+ {
|
|
|
+ inventoryList.Add (equipment);
|
|
|
+
|
|
|
+ if (equipment.HasHpProperty ())
|
|
|
+ hpList.Add (equipment);
|
|
|
+ if (equipment.HasDamageProperty ())
|
|
|
+ dmgList.Add (equipment);
|
|
|
+
|
|
|
+ moveList.Add (equipment);
|
|
|
}
|
|
|
|
|
|
private void SortRecommand()
|
|
@@ -114,20 +191,24 @@ public class EquipManager
|
|
|
|
|
|
private static int MoveCompare(Equipment a, Equipment b)
|
|
|
{
|
|
|
- if (a.GetMoveProperty () > b.GetMoveProperty ())
|
|
|
+ if (a.GetMoveProperty () > b.GetMoveProperty ()) {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ else if (a.GetMoveProperty () < b.GetMoveProperty ()) {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ float ap = a.GetHpProperty () + a.GetDamageProperty ();
|
|
|
+ float bp = a.GetDamageProperty () + a.GetDamageProperty ();
|
|
|
+ if (ap > bp)
|
|
|
return -1;
|
|
|
- else if (a.GetMoveProperty () < b.GetMoveProperty ())
|
|
|
+ else if (ap < bp)
|
|
|
return 1;
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
|
|
|
- public EquipData GetData(int id)
|
|
|
- {
|
|
|
- EquipData data = null;
|
|
|
- dataDict.TryGetValue (id, out data);
|
|
|
- return data;
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
|
|
|
public List<Equipment> GetInventoryList()
|
|
@@ -140,8 +221,15 @@ public class EquipManager
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
private void InitEquiped()
|
|
|
{
|
|
|
+ equipedDict.Clear ();
|
|
|
+
|
|
|
List<CraftConfigData> list = CraftManager.GetInstance ().GetDataList ();
|
|
|
for(int i=0; i<list.Count; i++)
|
|
|
{
|
|
@@ -150,7 +238,7 @@ public class EquipManager
|
|
|
equipedDict.Add (data.id, equipedData);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ m_Initialized = true;
|
|
|
}
|
|
|
|
|
|
public EquipedData GetEquipedData(int craftId)
|
|
@@ -160,6 +248,65 @@ public class EquipManager
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ public void RefreshAllRecommandEquiped()
|
|
|
+ {
|
|
|
+ SortRecommand ();
|
|
|
+
|
|
|
+ List<CraftConfigData> list = CraftManager.GetInstance ().GetDataList ();
|
|
|
+ for(int i=0; i<list.Count; i++)
|
|
|
+ {
|
|
|
+ EquipedData equipedData = GetEquipedData (list[i].id);
|
|
|
+ if(equipedData != null)
|
|
|
+ {
|
|
|
+ equipedData.UpdateRecommandList ();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public Equipment GetHpPriority(Dictionary<int, Equipment> rcmdDict)
|
|
|
+ {
|
|
|
+ for(int i=0; i<hpList.Count; i++)
|
|
|
+ {
|
|
|
+ Equipment equipment = hpList [i];
|
|
|
+ if(!rcmdDict.ContainsKey(equipment.GetData().id))
|
|
|
+ {
|
|
|
+ return equipment;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Equipment GetDamagePriority(Dictionary<int, Equipment> rcmdDict)
|
|
|
+ {
|
|
|
+ for(int i=0; i<dmgList.Count; i++)
|
|
|
+ {
|
|
|
+ Equipment equipment = dmgList [i];
|
|
|
+ if(!rcmdDict.ContainsKey(equipment.GetData().id))
|
|
|
+ {
|
|
|
+ return equipment;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Equipment GetMovePriority(Dictionary<int, Equipment> rcmdDict)
|
|
|
+ {
|
|
|
+ for(int i=0; i<moveList.Count; i++)
|
|
|
+ {
|
|
|
+ Equipment equipment = moveList [i];
|
|
|
+ if(!rcmdDict.ContainsKey(equipment.GetData().id))
|
|
|
+ {
|
|
|
+ return equipment;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
private static EquipManager instance;
|
|
|
public static EquipManager GetInstance()
|