Ejemplo n.º 1
0
    public override void OnOpenWindow()
    {
        BattleResultInfo data = PVEManager.Instance.BattleResult;

        for (int i = 0; i < 3; ++i)
        {
            if (i >= data.star)
            {
                _imgStar[i].sprite = _grayStar;
            }
        }

        if (_txtLevel != null)
        {
            _txtLevel.text = "Lv " + UserManager.Instance.Level;
        }
        _txtExp.text   = "x" + data.addPlayerExp;
        _txtMoney.text = data.addMoney.ToString();

        for (int i = 0; i < _heros.Length; ++i)
        {
            if (i < data.heroInfo.Count)
            {
                BattleResultHeroInfo heroInfo = data.heroInfo[i];
                _heros[i].SetInfo(heroInfo.heroID, heroInfo.addExp);
            }
            else
            {
                _heros[i].gameObject.SetActive(false);
            }
        }

        for (int i = 0; i < _items.Length; ++i)
        {
            if (i < data.itemInfo.Count)
            {
                ItemInfo itemInfo = data.itemInfo[i];
                _items[i].SetInfo(itemInfo.ConfigID, itemInfo.Number);
            }
            else
            {
                _items[i].gameObject.SetActive(false);
            }
        }

        UpdateClientData();
    }
Ejemplo n.º 2
0
    // 一场战斗胜利,更新level中的星级数据,并且更新最新关卡
    public void OnBattleResult(PBattleReport data)
    {
        if (data.pos == null)
        {
            Log.Error("OnBattleResult error, PBattleReport 没有设置 data.pos");
            return;
        }

        int levelID            = data.pos.x;
        MissionConstConfig cfg = MissionConstConfigLoader.GetConfig(levelID);

        if (cfg == null)
        {
            return;
        }

        UserManager.Instance.SP = Mathf.Max(0, UserManager.Instance.SP - cfg.StaminaCost);

        bool isAttacker = UserManager.Instance.EntityID == data.attackerId;

        if (isAttacker)
        {
            if (data.winner == eBattleSide.SIDE_DEFENSER)
            {
                // 输了
                UIManager.Instance.OpenWindow <UIPVEBattleResultFailView>();
                return;
            }
        }
        else
        {
            if (data.winner == eBattleSide.SIDE_ATTACKER)
            {
                // 输了
                UIManager.Instance.OpenWindow <UIPVEBattleResultFailView>();
                return;
            }
        }

        // 赢了
        LevelInfo info = GetLevelInfo(levelID);

        if (info != null)
        {
            info.star = data.star;
            ++info.fightCount;
        }
        else
        {
            AddLevelInfo(levelID, cfg.TimesLimit > 0 ? cfg.TimesLimit - 1 : 0, data.star);
        }

        ChapterType chapterType = (ChapterType)cfg.MissionDegree;

        if (chapterType == ChapterType.NORMAL)
        {
            LastLevelID = Mathf.Max(LastLevelID, levelID);
            int normalLastLevelID = GetLastLevelID(ChapterType.NORMAL);

            // 最后一个关卡打完后,自动跳到下一个
            if (levelID == normalLastLevelID)
            {
                CurrentSelectLevelID = GetNextLevel(levelID, chapterType);
            }
        }
        else if (chapterType == ChapterType.ELITE)
        {
            LastEliteLevelID = Mathf.Max(LastEliteLevelID, levelID);
            int eliteLastLevelID = GetLastLevelID(ChapterType.ELITE);

            // 最后一个关卡打完后,自动跳到下一个
            if (levelID == eliteLastLevelID)
            {
                CurrentSelectLevelID = GetNextLevel(levelID, chapterType);
            }
        }

        // 刷新副本界面
        UIManager.Instance.RefreshWindow <UINewPVEEntranceView>();

        // 战斗结果
        BattleResult = new BattleResultInfo();
        BattleResult.addPlayerExp = data.awdExp;
        BattleResult.star         = data.star;

        foreach (var item in data.awardPoits)
        {
            if (item.roleType == eRoleType.ROLE_LORD)
            {
            }
            else if (item.roleType == eRoleType.ROLE_HERO)
            {
                BattleResultHeroInfo heroInfo = new BattleResultHeroInfo();
                heroInfo.heroID = item.geter;
                heroInfo.addExp = item.awExp;
                BattleResult.heroInfo.Add(heroInfo);
            }

            foreach (var item2 in item.awardItems)
            {
                if (item2.type == eItem.CURRENCY)
                {
                    // 金钱
                    BattleResult.addMoney = item2.num;
                }
                else
                {
                    ItemInfo itemInfo = new ItemInfo();
                    itemInfo.Deserialize(item2);
                    BattleResult.itemInfo.Add(itemInfo);
                }
            }
        }

        UIManager.Instance.OpenWindow <UIPVEBattleResultView>();
    }