using Codice.Client.Common; using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; namespace GFGGame { public class ItemData { public int id; public int num; public bool isOnceBonus; private Dictionary AttributesDic = new Dictionary(); public void Reset() { id = 0; num = 0; isOnceBonus = false; AttributesDic.Clear(); } public void SetAttributes(List keys, List values) { for(var i = 0; i < keys.Count; ++i) { SetAttribute(keys[i], values[i], false); } } public void SetAttribute(int key, int value, bool dispatch = true) { AttributesDic[key] = value; if(dispatch) { EventAgent.DispatchEvent(ConstMessage.ITEM_ATTRIBUTE_CHANGED, id); } } public int MainScore { get { var cfg = ItemCfgArray.Instance.GetCfg(id); return GetScore(cfg.mainScore>0? cfg.mainScore:1); } } public int GetScore(int scoreType) { int valueBase = 0; var cfg = ItemCfgArray.Instance.GetCfg(id); switch(scoreType) { case (int)ConstItemAttributeType.FENG: valueBase = cfg.score1; break; case (int)ConstItemAttributeType.HUA: valueBase = cfg.score2; break; case (int)ConstItemAttributeType.XUE: valueBase = cfg.score3; break; case (int)ConstItemAttributeType.YUE: valueBase = cfg.score4; break; } AttributesDic.TryGetValue(CalculateHelper.GetItemScoreKey(scoreType, (int)ConstItemAttributeActionType.ADD_VALUE), out var valueAdd); AttributesDic.TryGetValue(CalculateHelper.GetItemScoreKey(scoreType, (int)ConstItemAttributeActionType.ADD_PERCENT), out var percentAdd); return CalculateHelper.GetItemAttribute(valueBase, percentAdd, valueAdd); } } }