|
@@ -9,8 +9,28 @@ using UnityEngine;
|
|
|
|
|
|
namespace GameLogic.Equipment
|
|
|
{
|
|
|
-
|
|
|
- // public struct
|
|
|
+
|
|
|
+ public class EqAddAttribute
|
|
|
+ {
|
|
|
+ public long atk;
|
|
|
+ public long def;
|
|
|
+ public long hp;
|
|
|
+
|
|
|
+ // public void AddAtk(long atk)
|
|
|
+ // {
|
|
|
+ // this.atk += atk;
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // public void AddDef(long def)
|
|
|
+ // {
|
|
|
+ // this.def += def;
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // public void AddHp(long hp)
|
|
|
+ // {
|
|
|
+ // this.hp += hp;
|
|
|
+ // }
|
|
|
+ }
|
|
|
|
|
|
public class EquipmentController
|
|
|
{
|
|
@@ -24,7 +44,21 @@ namespace GameLogic.Equipment
|
|
|
/// </summary>
|
|
|
public Dictionary<int, List<ItemInfo>> equipZyEqDic = new Dictionary<int, List<ItemInfo>>();
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 职业装备提供的属性
|
|
|
+ /// </summary>
|
|
|
+ public Dictionary<int, EqAddAttribute> zyEqAddAttributeDic = new Dictionary<int, EqAddAttribute>();
|
|
|
+
|
|
|
// private long curGUID;
|
|
|
+
|
|
|
+
|
|
|
+ public EquipmentController()
|
|
|
+ {
|
|
|
+ zyEqAddAttributeDic.Add(1, new EqAddAttribute());
|
|
|
+ zyEqAddAttributeDic.Add(2, new EqAddAttribute());
|
|
|
+ zyEqAddAttributeDic.Add(3, new EqAddAttribute());
|
|
|
+ zyEqAddAttributeDic.Add(4, new EqAddAttribute());
|
|
|
+ }
|
|
|
|
|
|
|
|
|
public void Init(ItemInfo itemInfo)
|
|
@@ -33,11 +67,26 @@ namespace GameLogic.Equipment
|
|
|
if (itemInfo.eqInfo != null && itemInfo.eqInfo.isEquip)
|
|
|
{
|
|
|
// equipZyEqDic.Add(itemInfo.eqInfo.basicEquipConfig.profession,);
|
|
|
- AddToCurEquip(itemInfo);
|
|
|
+ AddToCurEquip(itemInfo, true);
|
|
|
}
|
|
|
+
|
|
|
// curGUID = AccountFileInfo.Instance.playerData.eqGUID;
|
|
|
}
|
|
|
|
|
|
+ private void CalZyEqAddAttribute()
|
|
|
+ {
|
|
|
+ foreach (KeyValuePair<int,List<ItemInfo>> keyValuePair in equipZyEqDic)
|
|
|
+ {
|
|
|
+ int zy = keyValuePair.Key;
|
|
|
+ foreach (ItemInfo eqItem in keyValuePair.Value)
|
|
|
+ {
|
|
|
+ zyEqAddAttributeDic[zy].atk += eqItem.eqInfo.Attack;
|
|
|
+ zyEqAddAttributeDic[zy].def += eqItem.eqInfo.Defense;
|
|
|
+ zyEqAddAttributeDic[zy].hp += eqItem.eqInfo.Hp;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 生成装备的GUID
|
|
|
/// </summary>
|
|
@@ -89,9 +138,11 @@ namespace GameLogic.Equipment
|
|
|
|
|
|
/// <summary>
|
|
|
/// 一键穿职业装备
|
|
|
+ /// 把对应职业,对应部位的,最好的装备找出来
|
|
|
/// </summary>
|
|
|
/// <param name="zy"></param>
|
|
|
- public void EquipZyEqs(int zy)
|
|
|
+ /// <returns>true = 有装备变动 </returns>
|
|
|
+ public bool EquipZyEqs(int zy)
|
|
|
{
|
|
|
if (zyEqDic.TryGetValue(zy, out var bwDic))
|
|
|
{
|
|
@@ -118,7 +169,7 @@ namespace GameLogic.Equipment
|
|
|
|
|
|
if (bestBwEq != null)
|
|
|
{
|
|
|
- AddToCurEquip(bestBwEq);
|
|
|
+ return AddToCurEquip(bestBwEq);
|
|
|
// bestBwEq.eqInfo.isEquip = true;
|
|
|
// if (equipZyEqDic.TryGetValue(zy, out var eqList))
|
|
|
// {
|
|
@@ -158,9 +209,10 @@ namespace GameLogic.Equipment
|
|
|
// }
|
|
|
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -168,13 +220,16 @@ namespace GameLogic.Equipment
|
|
|
/// 把装备加到:当前已经穿的装备列表中管理
|
|
|
/// </summary>
|
|
|
/// <param name="eqItem"></param>
|
|
|
- public void AddToCurEquip(ItemInfo eqItem)
|
|
|
+ public bool AddToCurEquip(ItemInfo eqItem, bool isInit = false)
|
|
|
{
|
|
|
int zy = eqItem.eqInfo.basicEquipConfig.profession;
|
|
|
+
|
|
|
+ // bool changed = true;
|
|
|
+ bool isAdd = true;
|
|
|
|
|
|
if (equipZyEqDic.TryGetValue(zy, out var eqList))
|
|
|
{
|
|
|
- bool isAdd = true;
|
|
|
+
|
|
|
// 从后往前遍历,这样删除元素不会影响索引
|
|
|
for (int i = eqList.Count - 1; i >= 0; i--)
|
|
|
{
|
|
@@ -190,6 +245,11 @@ namespace GameLogic.Equipment
|
|
|
{
|
|
|
itemInfo.eqInfo.isEquip = false;
|
|
|
eqList.RemoveAt(i);
|
|
|
+ if (!isInit)
|
|
|
+ {
|
|
|
+ AccountFileInfo.Instance.SaveItemData(itemInfo);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
break;
|
|
@@ -200,6 +260,10 @@ namespace GameLogic.Equipment
|
|
|
{
|
|
|
eqList.Add(eqItem);
|
|
|
eqItem.eqInfo.isEquip = true;
|
|
|
+ if (!isInit)
|
|
|
+ {
|
|
|
+ AccountFileInfo.Instance.SaveItemData(eqItem);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else
|
|
@@ -210,6 +274,14 @@ namespace GameLogic.Equipment
|
|
|
eqList.Add(eqItem);
|
|
|
equipZyEqDic.Add(zy, eqList);
|
|
|
}
|
|
|
+
|
|
|
+ //有装备变更时,计算一下装备提供的属性
|
|
|
+ if (isAdd)
|
|
|
+ {
|
|
|
+ CalZyEqAddAttribute();
|
|
|
+ }
|
|
|
+
|
|
|
+ return isAdd;
|
|
|
}
|
|
|
|
|
|
public void AddEquipment(ItemInfo eqItemInfo)
|