Beispiel #1
0
        public void SetHeroData(int heroId, int addHeroExp, float delay = 0)
        {
            HeroInfo info = HeroProxy.instance.GetHeroInfo((uint)heroId);

            if (info == null)
            {
                return;
            }
            HeroInfo temp     = new HeroInfo(info.instanceID, info.heroData.id, 0, 0, info.advanceLevel);
            int      totalExp = info.TotalLevelUpExp - addHeroExp;

            HeroExpData oldData = HeroExpData.GetHeroExpData(totalExp);
            bool        isMax   = oldData == null;

            if (isMax)
            {
                temp = info;
            }
            else
            {
                temp.level = HeroExpData.GetHeroExpData(totalExp).lv;
                temp.exp   = totalExp - HeroExpData.GetHeroExpDataByLv(temp.level - 1).exp_total;
            }

            //Debugger.Log(string.Format("[HeroView][SetHeroData]heroid: {0}, old exp:{1}, old level: {2}, new exp:{3},  new level :{4}, addExp:{5}",heroId,temp.exp,temp.level,info.exp,info.level,addHeroExp));
            SetHeroData(temp, addHeroExp, delay);
        }
Beispiel #2
0
        public static float GetPlayerExpPercentToNextLevel(PlayerInfo playerInfo)
        {
            float playerExpPercentToNextLevel = 0;

            if (HeroExpData.GetPlayerExpDataByLv(playerInfo.level).exp > 0)
            {
                playerExpPercentToNextLevel = (float)playerInfo.exp / HeroExpData.GetHeroExpDataByLv(playerInfo.level).exp;
            }
            return(playerExpPercentToNextLevel);
        }
Beispiel #3
0
        public static float GetHeroExpPercentToNextLevel(HeroInfo heroInfo)
        {
            float heroExpPercentToNextLevel = 0;

            if (HeroExpData.GetHeroExpDataByLv(heroInfo.level).exp > 0)
            {
                heroExpPercentToNextLevel = (float)heroInfo.exp / HeroExpData.GetHeroExpDataByLv(heroInfo.level).exp;
            }
            return(heroExpPercentToNextLevel);
        }
Beispiel #4
0
        private void UpdateHeroBar()
        {
            float duringTime = 1f;

            if (_curHeroLevel > _nextHeroLevel)
            {
                return;
            }
            if (_curHeroLevel == _nextHeroLevel)
            {
                int exp_need = 1;
                int exp_cur  = 0;
                if (_isLeader)
                {
                    HeroExpData expData = HeroExpData.GetHeroExpDataByLv(_nextHeroLevel);
                    bool        isMax   = expData == null;
                    if (!isMax)
                    {
                        exp_need = expData.exp;
                        exp_cur  = expData.exp - (expData.exp_total - (_oldPlayerInfo.TotalLevelUpExp + _addHeroExp));
                    }
                }
                else
                {
                    HeroExpData expData = HeroExpData.GetHeroExpDataByLv(_nextHeroLevel);
                    bool        isMax   = expData == null;
                    if (!isMax)
                    {
                        exp_need = expData.exp;
                        exp_cur  = expData.exp - (expData.exp_total - (_oldHeroInfo.TotalLevelUpExp + _addHeroExp));
                    }
                }

                float percent = (exp_cur + 0.0f) / exp_need;
                exp_hero_bar.ChangeValue(percent, duringTime * (percent - exp_hero_bar.Value)).setOnComplete(DoHeroLevelUpFinished);
            }
            else
            {
                if (_curHeroLevel == _oldHeroLevel)
                {
                    // LeanTween.moveLocalY(image_upArrow.gameObject, 0, 0.3f).setLoopPingPong();

                    exp_hero_bar.ChangeValue(1, duringTime).setOnComplete(HeroLevelUp);
                }
            }
        }
Beispiel #5
0
        public void SetMainHeroData(int addHeroExp, int addAccountExp, float delay = 0)
        {
            PlayerInfo playerInfo = GameProxy.instance.PlayerInfo;

            PlayerInfo temp = new PlayerInfo(playerInfo.instanceID, playerInfo.playerData.Id, 0, 0, 0, 0, "");

            int         expTotal = playerInfo.TotalLevelUpExp - addHeroExp;
            HeroExpData oldData  = HeroExpData.GetHeroExpData(expTotal);
            bool        isMax    = oldData == null;

            if (isMax)
            {
                temp = playerInfo;
            }
            else
            {
                temp.level = HeroExpData.GetHeroExpData(expTotal).lv;
                temp.exp   = expTotal - HeroExpData.GetHeroExpDataByLv(temp.level - 1).exp_total;
            }

            //Debugger.Log(string.Format("[HeroView][SetMainHeroData]playerid: {0}, old exp:{1}, old level: {2}, addheroExp:{3},addAccount:{4}",playerInfo.instanceID,temp.exp,temp.level,addHeroExp,addAccountExp));

            SetMainHeroData(temp, addHeroExp, addAccountExp, delay);
        }
Beispiel #6
0
        private bool OnClickExpMedicineHandler(int addExp)
        {
            if (_selectHeroLevel == 0)
            {
                _selectHeroLevel = _playerInfo.level;
                _selectHeroExp   = _playerInfo.exp;
                selectMaxLevel   = _playerInfo.MaxLevel;
            }
            if (_selectHeroLevel >= selectMaxLevel)
            {
                return(false);
            }
            if (_selectHeroLevel >= GameProxy.instance.AccountLevel)
            {
                return(false);
            }

            int         totalExp = addExp + _selectHeroExp;
            int         level    = _selectHeroLevel;
            HeroExpData expData;

            while (true)
            {
                expData = HeroExpData.GetHeroExpDataByLv(level);
                if (expData == null)
                {
                    return(false);
                }
                if (totalExp >= expData.exp)//升级
                {
                    level++;
                    totalExp -= expData.exp;
                    if (level == selectMaxLevel)
                    {
                        totalExp = 0;
                        break;
                    }
                }
                else //经验没导致升级
                {
                    break;
                }
            }
            int oldLv = _selectHeroLevel;

            _selectHeroLevel = level;
            _selectHeroExp   = totalExp;
            expData          = HeroExpData.GetHeroExpDataByLv(level);
            if (expData != null)
            {
                UpdateExpBar(level - oldLv + (totalExp + 0.01f) / expData.exp);
            }
            if (oldLv != level)
            {
                RefreshAttributes();
                playerLevelText.text = string.Format("LV {0}/{1}", _selectHeroLevel, selectMaxLevel);
                playerLevelUpFXGameObject.SetActive(false);
                playerLevelUpFXGameObject.SetActive(true);
            }
            return(true);
        }
Beispiel #7
0
        private void InitBar()
        {
            float percent = 0;

            if (_isLeader)
            {
                HeroExpData curHeroExpData = HeroExpData.GetHeroExpDataByLv(_oldPlayerInfo.level);
                HeroExpData next           = HeroExpData.GetHeroExpData(_oldPlayerInfo.TotalLevelUpExp, _addHeroExp);
                if (curHeroExpData == null)
                {
                    exp_hero_bar.ChangeValue(0);
                }
                else
                {
                    percent = (_oldPlayerInfo.exp + 0.0f) / curHeroExpData.exp;
                    exp_hero_bar.ChangeValue(percent);
                }

                if (next == null)
                {
                    _nextHeroLevel = GameProxy.instance.PlayerInfo.level;
                }
                else
                {
                    _nextHeroLevel = next.lv;
                }


                exp_profession_bar.ChangeValue(0);
                //account
                InitAccountBar();
                if (_addAcountExp != 0)
                {
                    StartCoroutine(UpdateAccountBarDelay(_delayTime));
                }
            }
            else
            {
                exp_profession_bar.gameObject.SetActive(false);


                HeroExpData curHeroExpData = HeroExpData.GetHeroExpDataByLv(_oldHeroInfo.level);
                HeroExpData next           = HeroExpData.GetHeroExpData(_oldHeroInfo.TotalLevelUpExp, _addHeroExp);
                if (curHeroExpData == null)
                {
                    exp_hero_bar.ChangeValue(0);
                }
                else
                {
                    percent = (_oldHeroInfo.exp + 0.0f) / curHeroExpData.exp;
                    exp_hero_bar.ChangeValue(percent);
                }
                if (next == null)
                {
                    _nextHeroLevel = HeroProxy.instance.GetHeroInfo(_oldHeroInfo.instanceID).level;
                }
                else
                {
                    _nextHeroLevel = next.lv;
                }
            }
            if (expAddText != null)
            {
                expAddText.text = string.Format(Localization.Get("ui.fightResultView.hero_exp_add"), _addHeroExp);
            }
            text_lv.text = string.Format(Localization.Get("common.role_icon.role_lv"), _curHeroLevel);
            if (_addHeroExp != 0)
            {
                StartCoroutine(UpdateHeroBarDelay(_delayTime));
            }
        }