|
@@ -68,14 +68,7 @@ namespace GameLogic.Equipment
|
|
|
}
|
|
|
|
|
|
|
|
|
- public void Init(ItemInfo itemInfo)
|
|
|
- {
|
|
|
- AddEquipment(itemInfo);
|
|
|
- if (itemInfo.eqInfo != null && itemInfo.eqInfo.isWear)
|
|
|
- {
|
|
|
- AddToCurEquip(itemInfo, true);
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
private void CalZyEqAddAttribute()
|
|
|
{
|
|
@@ -324,16 +317,7 @@ namespace GameLogic.Equipment
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (bestBwEq != null)
|
|
|
- {
|
|
|
- bool b = AddToCurEquip(bestBwEq);
|
|
|
-
|
|
|
- if (!changed)
|
|
|
- {
|
|
|
- changed = b;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -341,74 +325,7 @@ namespace GameLogic.Equipment
|
|
|
}
|
|
|
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 把装备加到:当前已经穿的装备列表中管理
|
|
|
- /// </summary>
|
|
|
- /// <param name="bestEqItem"></param>
|
|
|
- /// <param name="isInit">true 表示是初始化,初始化时,不支持保存数据的逻辑</param>
|
|
|
- /// <returns></returns>
|
|
|
- public bool AddToCurEquip(ItemInfo bestEqItem, bool isInit = false)
|
|
|
- {
|
|
|
- int zy = bestEqItem.eqInfo.basicEquipConfig.profession;
|
|
|
-
|
|
|
- bool isAdd = true;
|
|
|
-
|
|
|
- if (equipZyEqDic.TryGetValue(zy, out var eqList))
|
|
|
- {
|
|
|
- // 从后往前遍历,这样删除元素不会影响索引
|
|
|
- for (int i = eqList.Count - 1; i >= 0; i--)
|
|
|
- {
|
|
|
- ItemInfo itemInfo = eqList[i];
|
|
|
- if (itemInfo.eqInfo.basicEquipConfig.Type == bestEqItem.eqInfo.basicEquipConfig.Type)
|
|
|
- {
|
|
|
- //已经在已装备列表里面了,就不加了
|
|
|
- if (itemInfo.Equals(bestEqItem))
|
|
|
- {
|
|
|
- isAdd = false;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //老装备脱下来
|
|
|
- EquipLogic(false, itemInfo);
|
|
|
- //从已装备的列表处,移除
|
|
|
- eqList.RemoveAt(i);
|
|
|
- if (!isInit)
|
|
|
- {
|
|
|
- AccountFileInfo.Instance.SaveItemData(itemInfo);
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (isAdd)
|
|
|
- {
|
|
|
- EquipLogic(true, bestEqItem);
|
|
|
- eqList.Add(bestEqItem);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- EquipLogic(true, bestEqItem);
|
|
|
-
|
|
|
- eqList = new List<ItemInfo>();
|
|
|
- eqList.Add(bestEqItem);
|
|
|
- equipZyEqDic.Add(zy, eqList);
|
|
|
- }
|
|
|
-
|
|
|
- //有装备变更时,计算一下装备提供的属性
|
|
|
- if (isAdd)
|
|
|
- {
|
|
|
- CalZyEqAddAttribute();
|
|
|
- if (!isInit)
|
|
|
- {
|
|
|
- AccountFileInfo.Instance.SaveItemData(bestEqItem);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return isAdd;
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 穿/脱 装备的逻辑
|
|
|
/// </summary>
|
|
@@ -427,58 +344,7 @@ namespace GameLogic.Equipment
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 这里2次管理装备item的目的是为了:后续穿脱装备时,遍历效率更高
|
|
|
- /// </summary>
|
|
|
- /// <param name="eqItemInfo"></param>
|
|
|
- public void AddEquipment(ItemInfo eqItemInfo)
|
|
|
- {
|
|
|
- if (!eqItemInfo.IsEquipItem())
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // allEqDic.Add(eqItemInfo.guid, eqItemInfo);
|
|
|
-
|
|
|
- int zy = eqItemInfo.eqInfo.basicEquipConfig.profession;
|
|
|
- int bw = eqItemInfo.eqInfo.basicEquipConfig.Type;
|
|
|
- if (allZyEqDic.TryGetValue(zy, out var bwDic))
|
|
|
- {
|
|
|
- if (bwDic.TryGetValue(bw, out var eqBwList))
|
|
|
- {
|
|
|
- bool isAdd = true;
|
|
|
- foreach (ItemInfo itemInfo in eqBwList)
|
|
|
- {
|
|
|
- if (itemInfo.guid == eqItemInfo.guid)
|
|
|
- {
|
|
|
- isAdd = false;
|
|
|
- // LogTool.Warning("已经有这个装备,不再重复添加:"+ eqItemInfo.guid);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (isAdd)
|
|
|
- {
|
|
|
- eqBwList.Add(eqItemInfo);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- eqBwList = new List<ItemInfo>();
|
|
|
- eqBwList.Add(eqItemInfo);
|
|
|
- bwDic.Add(bw, eqBwList);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- bwDic = new Dictionary<int, List<ItemInfo>>();
|
|
|
- List<ItemInfo> eqBwList = new List<ItemInfo>();
|
|
|
- eqBwList.Add(eqItemInfo);
|
|
|
- bwDic.Add(bw, eqBwList);
|
|
|
- allZyEqDic.Add(zy, bwDic);
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
// public void RemoveEquipment(ItemInfo eqItemInfo)
|
|
|
// {
|