public void Init() { m_LabelEquipName.text = m_Equip.GetName(); m_SpriteEquipIcon.spriteName = m_Equip.Info.IconID; m_LabelEquipEnchant.text = string.Format("+{0}", m_Equip.EnchantLevel); m_LabelEquipEnchantChanged.text = string.Format("+{0}", m_Equip.EnchantLevel + 1); StatInfo stat_info = new StatInfo(); StatInfo stat_info2 = new StatInfo(); EquipInfoManager.Instance.AddStats(m_Equip.Info, m_Equip.EnchantLevel, stat_info); EquipInfoManager.Instance.AddStats(m_Equip.Info, m_Equip.EnchantLevel + 1, stat_info2); eStatType stat_type = stat_info.GetStatType(0, m_Equip.Info.CategoryInfo.AttackType); if ((int)stat_type < 100) { m_LabelEquipValue1.text = Localization.Get(string.Format("StatType_{0}", stat_type)); m_LabelEquipValue1Current.text = string.Format("+{0}", stat_info.GetValue(stat_type)); m_LabelEquipValue1Changed.text = string.Format("+{0}", stat_info2.GetValue(stat_type)); } stat_type = stat_info.GetStatType(1, m_Equip.Info.CategoryInfo.AttackType); if ((int)stat_type < 100) { m_LabelEquipValue2.text = Localization.Get(string.Format("StatType_{0}", stat_type)); m_LabelEquipValue2Current.text = string.Format("+{0}", stat_info.GetValue(stat_type)); m_LabelEquipValue2Changed.text = string.Format("+{0}", stat_info2.GetValue(stat_type)); m_Texts[2].SetActive(true); } else { m_Texts[2].SetActive(false); } m_LabelEquipEnchantPrice.text = Localization.Format("GoodsFormat", m_Equip.EnchantCost); }
public void AddStats(StatInfo info, StatInfo base_stat, eAttackType attack_type, float grade_percent, short level) { foreach (var action in Actions) { switch (action.actionType) { case eActionType.passive: switch (action.statType) { case eStatType.Defense: info.AddValue(eStatType.PhysicDefense, action.GetValue(grade_percent, level)); info.AddValue(eStatType.MagicDefense, action.GetValue(grade_percent, level)); break; case eStatType.Attack: switch (attack_type) { case eAttackType.heal: info.AddValue(eStatType.Heal, action.GetValue(grade_percent, level)); break; case eAttackType.physic: info.AddValue(eStatType.PhysicAttack, action.GetValue(grade_percent, level)); break; case eAttackType.magic: info.AddValue(eStatType.MagicAttack, action.GetValue(grade_percent, level)); break; } break; default: // if (StatInfo.IsPercentValue(action.statType)) // info.AddValue(action.statType, action.GetValue(1f, level)); // else info.AddValue(action.statType, action.GetValue(grade_percent, level)); break; } break; case eActionType.passive_percent: switch (action.statType) { case eStatType.Defense: info.AddValue(eStatType.PhysicDefense, base_stat.GetValue(eStatType.PhysicDefense) * action.GetValue(1f, level) / 10000); info.AddValue(eStatType.MagicDefense, base_stat.GetValue(eStatType.MagicDefense) * action.GetValue(1f, level) / 10000); break; case eStatType.Attack: switch (attack_type) { case eAttackType.heal: info.AddValue(eStatType.Heal, base_stat.GetValue(eStatType.Heal) * action.GetValue(1f, level) / 10000); break; case eAttackType.physic: info.AddValue(eStatType.PhysicAttack, base_stat.GetValue(eStatType.PhysicAttack) * action.GetValue(1f, level) / 10000); break; case eAttackType.magic: info.AddValue(eStatType.MagicAttack, base_stat.GetValue(eStatType.MagicAttack) * action.GetValue(1f, level) / 10000); break; } break; default: if (StatInfo.IsPercentValue(action.statType)) { info.AddValue(action.statType, action.GetValue(1f, level)); } else { info.AddValue(action.statType, base_stat.GetValue(action.statType) * action.GetValue(1f, level) / 10000); } break; } break; } } }
public void CalculateStat(List <Buff> buffs) { Stat = new StatInfo(); foreach (eStatType type in Enum.GetValues(typeof(eStatType))) { if ((int)type >= 100) { continue; } int value = Base.GetValue(type); Stat.SetValue(type, value); } if (buffs != null) { foreach (Buff buff in buffs) { if (buff.IsFinish == true) { continue; } switch (buff.ActionInfo.actionType) { case eActionType.buff: case eActionType.debuff: { int buff_value = buff.Value; switch (buff.ActionInfo.statType) { case eStatType.Attack: { Stat.AddValue(eStatType.PhysicAttack, buff_value); Stat.AddValue(eStatType.MagicAttack, buff_value); Stat.AddValue(eStatType.Heal, buff_value); } break; case eStatType.Defense: { Stat.AddValue(eStatType.PhysicDefense, buff_value); Stat.AddValue(eStatType.MagicDefense, buff_value); } break; default: Stat.AddValue(buff.ActionInfo.statType, buff_value); break; } } break; case eActionType.buff_percent: case eActionType.debuff_percent: { long buff_value = buff.ActionInfo.actionType == eActionType.buff_percent ? buff.Value : -buff.Value; switch (buff.ActionInfo.statType) { case eStatType.Attack: { Stat.AddValue(eStatType.PhysicAttack, (int)(Base.GetValue(eStatType.PhysicAttack) * buff_value / 10000)); Stat.AddValue(eStatType.MagicAttack, (int)(Base.GetValue(eStatType.MagicAttack) * buff_value / 10000)); Stat.AddValue(eStatType.Heal, (int)(Base.GetValue(eStatType.Heal) * buff_value / 10000)); } break; case eStatType.Defense: { Stat.AddValue(eStatType.PhysicDefense, (int)(Base.GetValue(eStatType.PhysicAttack) * buff_value / 10000)); Stat.AddValue(eStatType.MagicDefense, (int)(Base.GetValue(eStatType.MagicDefense) * buff_value / 10000)); } break; default: // if (StatInfo.IsPercentValue(buff.ActionInfo.statType) == true) // Stat.AddValue(buff.ActionInfo.statType, buff_value); // else Stat.AddValue(buff.ActionInfo.statType, (int)(Base.GetValue(buff.ActionInfo.statType) * buff_value / 10000)); break; } } break; } } } }
////////////////////////////////////////////////////////////////////////////////////// public void Init(Equip equip, System.Action <Equip> _OnEquipEnchantCallback, bool bPlayTween = false) { m_Equip = equip; OnEquipEnchantCallback = _OnEquipEnchantCallback; m_LabelEquipName.text = m_Equip.GetName(); if (m_Equip.Stuffs.Count > 0) { RewardItemPrefab.Clear(); m_Stuff = RewardItemPrefab.GetNewObject <RewardItem>(m_StuffIndicator.transform, Vector3.zero); m_Stuff.Init(m_Equip.Stuffs[0]); m_Stuff.OnClickItem = OnClickStuff; } StatInfo stat_info = new StatInfo(); StatInfo stat_info2 = new StatInfo(); EquipInfoManager.Instance.AddStats(m_Equip.Info, m_Equip.EnchantLevel, stat_info); EquipItemPrefab.Clear(); if (m_Equip.EnchantLevel < 5) { var item1 = EquipItemPrefab.GetNewObject <EquipItem>(m_EquipIndicator.transform, Vector3.zero); item1.Init(m_Equip); Equip equip_enchant = m_Equip.Clone(); equip_enchant.Enchant(); var item2 = EquipItemPrefab.GetNewObject <EquipItem>(m_EquipEnchantIndicator.transform, Vector3.zero); item2.Init(equip_enchant); m_LabelEquipEnchantGrade.text = Localization.Get("EquipEnchantGrade"); m_LabelEquipEnchant.text = string.Format("+{0}", m_Equip.EnchantLevel); m_LabelEquipEnchantChanged.text = string.Format("+{0}", m_Equip.EnchantLevel + 1); EquipInfoManager.Instance.AddStats(m_Equip.Info, m_Equip.EnchantLevel + 1, stat_info2); m_EquipReady.gameObject.SetActive(m_Equip.IsNotify); m_BtnEnchant.SetActive(true); m_BtnEnchant.GetComponent <BoxCollider2D>().enabled = true; m_BtnUpgrade.SetActive(false); m_MaxEnchant.SetActive(false); } else if (m_Equip.Info.Grade < 6) { var item1 = EquipItemPrefab.GetNewObject <EquipItem>(m_EquipIndicator.transform, Vector3.zero); item1.Init(m_Equip); var equip_info = EquipInfoManager.Instance.GetInfoByID(m_Equip.Info.NextEquipID); Equip equip_enchant = new Equip(equip_info); var item2 = EquipItemPrefab.GetNewObject <EquipItem>(m_EquipEnchantIndicator.transform, Vector3.zero); item2.Init(equip_enchant); m_LabelEquipEnchantGrade.text = Localization.Get("EquipGrade"); m_LabelEquipEnchant.text = string.Format("{0}", m_Equip.Info.Grade); m_LabelEquipEnchantChanged.text = string.Format("{0}", equip_info.Grade); EquipInfoManager.Instance.AddStats(equip_info, 0, stat_info2); m_EquipReady.gameObject.SetActive(m_Equip.IsNotify); m_BtnEnchant.SetActive(false); m_BtnUpgrade.SetActive(true); m_BtnUpgrade.GetComponent <BoxCollider2D>().enabled = true; m_MaxEnchant.SetActive(false); } else { var item1 = EquipItemPrefab.GetNewObject <EquipItem>(m_EquipIndicator.transform, Vector3.zero); item1.Init(m_Equip); m_LabelEquipEnchantGrade.text = Localization.Get("EquipEnchantGrade"); m_LabelEquipEnchant.text = string.Format("+{0}", m_Equip.EnchantLevel); m_LabelEquipEnchantChanged.text = ""; m_BtnEnchant.SetActive(false); m_BtnUpgrade.SetActive(false); m_MaxEnchant.SetActive(true); } eStatType stat_type = stat_info.GetStatType(0, m_Equip.Info.CategoryInfo.AttackType); if ((int)stat_type < 100) { m_LabelEquipValue1.text = Localization.Get(string.Format("StatType_{0}", stat_type)); m_LabelEquipValue1Current.text = string.Format("+{0}", stat_info.GetValue(stat_type)); if (m_MaxEnchant.activeSelf == true) { m_LabelEquipValue1Changed.text = ""; } else { m_LabelEquipValue1Changed.text = string.Format("+{0}", stat_info2.GetValue(stat_type)); } } stat_type = stat_info.GetStatType(1, m_Equip.Info.CategoryInfo.AttackType); if ((int)stat_type < 100) { m_LabelEquipValue2.text = Localization.Get(string.Format("StatType_{0}", stat_type)); m_LabelEquipValue2Current.text = string.Format("+{0}", stat_info.GetValue(stat_type)); if (m_MaxEnchant.activeSelf == true) { m_LabelEquipValue2Changed.text = ""; } else { m_LabelEquipValue2Changed.text = string.Format("+{0}", stat_info2.GetValue(stat_type)); } m_Texts[2].SetActive(true); } else { m_Texts[2].SetActive(false); } m_LabelEquipEnchantPrice.text = Localization.Format("GoodsFormat", m_Equip.EnchantCost); if (bPlayTween) { m_PlayTween.Play(true); } }