using Codice.CM.Common;
using Core.Utility;
using Excel2Json;
using Fort23.UTool;
using UnityEngine;
using ItemInfo = GameLogic.Bag.ItemInfo;
namespace GameLogic.Equipment
{
public class EquipmentInfo
{
///
/// guid= itemID + eLv + quality
/// 这几个值一样,那装备的属性就一定相同
/// 后续要做特殊装备的话,在加新的字段,以及根据新资源,来组合新guid
///
public string guid;
public HeroBasicEquipConfig basicEquipConfig;
public ItemConfig itemConfig;
// public ItemInfo itemInfo;
public int count;
public int quality;
public int ownerID;
public int level;
public int Attack => m_Attack;
public int Defense => m_Defense;
public int Hp => m_HP;
private int m_Attack;
private int m_Defense;
private int m_HP;
private ItemInfo myItemInfo;
public void InitEquipment(ItemInfo modelInfo, ItemInfo lvInfo, ItemInfo qualityInfo)
{
//有效性检查
if (//modelInfo.dropItemConfig.dropItemType != 1 &&
lvInfo.dropItemConfig.dropItemType != 3 &&
qualityInfo.dropItemConfig.dropItemType != 2)
{
string errorTip = "modelInfo.dropItemConfig.dropItemType=" +
modelInfo.dropItemConfig.dropItemType +
" |lvInfo.dropItemConfig.dropItemType" +
lvInfo.dropItemConfig.dropItemType +
" |qualityInfo.dropItemConfig.dropItemType" +
qualityInfo.dropItemConfig.dropItemType;
LogTool.Error(errorTip);
}
myItemInfo = modelInfo;
InitEquipment(modelInfo.config,
lvInfo.dropItemConfig.itemID[0],
qualityInfo.dropItemConfig.itemID[0]);
}
public void InitEquipment(ItemConfig itemConfig, int eLv, int quality)
{
// itemInfo = new ItemInfo(itemID);
// itemConfig = ConfigComponent.Instance.Get(itemID);
this.itemConfig = itemConfig;
this.quality = quality;
// int equipmentConfigID = itemConfig.itemParam[0] * 10000 + itemConfig.itemParam[1] * 1000 + eLv;
int equipmentConfigID =
GlobalParam.GenerateEquipmentID(itemConfig.itemParam[0], itemConfig.itemParam[1], eLv,
PlayerManager.Instance.heroController.mainLevel);
basicEquipConfig = ConfigComponent.Instance.Get(equipmentConfigID);
level = basicEquipConfig.lv;
// guid = GlobalParam.GenerateGUID();
myItemInfo.guid = itemConfig.ID.ToString() + basicEquipConfig.lv + quality;
CalAtt();
}
public void CalAtt()
{
// m_Attack = basicEquipConfig.att
// foreach (int attTyp in basicEquipConfig.AttType)
for(int i=0; i < basicEquipConfig.AttType.Length; i++)
{
int attTyp = basicEquipConfig.AttType[i];
int value = Mathf.RoundToInt( basicEquipConfig.AttValue[i] *
PlayerManager.Instance.eqController.
GetEquipmentRarityAttributeFactor(quality));
switch (attTyp)
{
case 1:
m_HP = value;
break;
case 2:
m_Attack = value;
break;
case 3:
m_Defense = value;
break;
}
}
}
public AccountFileInfo.EqData ToData()
{
AccountFileInfo.EqData eqData = new AccountFileInfo.EqData
{
// guid = guid,
// count = count,
itemConfigID = itemConfig.ID,
level = level,
quality = quality,
ownerID = ownerID
};
return eqData;
}
}
}