Пример #1
0
    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);
    }
Пример #2
0
    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;
            }
        }
    }
Пример #3
0
    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;
                }
            }
        }
    }
Пример #4
0
    //////////////////////////////////////////////////////////////////////////////////////
    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);
        }
    }