Пример #1
0
    private void SkillChose(int skillId)
    {
        Skill skill = JsonMgr.GetSingleton().GetSkillByID(skillId);

        skillname_txt.text = skill.name;
        int skillLv = heroData.SkillLevel[skill.ID];

        skilllv_txt.text = skillLv.ToString();
        //经验花费等级+5的4次幂 * 0.01
        int expcost = Mathf.RoundToInt(Mathf.Pow(skillLv + 5, 4) * 0.01f);

        expcost_txt.text = expcost.ToString();
        int moneyconst = skillLv * 500;

        moneycost_txt.text = moneyconst.ToString();
        //2被动 3自动 4主动
        string type = "被动";

        if (skill.type == 3)
        {
            type = "自动";
        }
        else if (skill.type == 4)
        {
            type = "主动";
        }
        condition_txt.text = type;
        string desc  = skill.desc;
        var    o     = new List <string>();
        int    start = 0;

        for (int i = 0; i < desc.Length; ++i)
        {
            if (desc[i].Equals('{'))
            {
                start = i;
            }
            else if (desc[i].Equals('}') && start != 0)
            {
                o.Add(desc.Substring(start + 1, i - start - 1));
                start = 0;
            }
        }
        var n = new string[o.Count];

        for (int i = 0; i < o.Count; i++)
        {
            string[] sp       = o[i].Split(':');
            int      tostring = int.Parse(sp[0]);
            sp = sp[1].Split('|');
            float  att = AttrUtil.SkillPanelShow(float.Parse(sp[0]), skillLv, float.Parse(sp[1]));
            string s   = string.Format("{0:###.#}", att * (tostring == 1 ? 100 : 1));
            n[i] = s + (tostring == 1 ? "%" : "");
        }
        for (int i = 0; i < n.Length; i++)
        {
            desc = desc.Replace(o[i], n[i]);
        }
        desc = desc.Replace("{", "").Replace("}", "");
        tell_txt.supportRichText = true;
        tell_txt.text            = desc;
        if (heroData.SkillLevel[skill.ID] >= HeroMgr.MaxHeroLevel)
        {
            lvup_btn.interactable = false;
            return;
        }
        lvup_btn.interactable = true;
        EventListener.Get(lvup_btn.gameObject).OnClick = e =>
        {
            if (!lvup_btn.interactable)
            {
                CanvasView.Instance.AddNotice("技能满级");
                return;
            }
            //检测技能升级条件
            long cash    = Role.Instance.Cash;
            long expPool = Role.Instance.ExpPool;
            if (expcost > expPool)
            {
                CanvasView.Instance.AddNotice("经验不足,技能升级失败!");
                return;
            }
            if (moneyconst > cash)
            {
                CanvasView.Instance.AddNotice("金币不足,技能升级失败!");
                return;
            }
            //通知服务器技能升级
            heroData.SkillLevel[skill.ID]++;
            SkillChose(skillId);
        };
    }