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(); }
// 一场战斗胜利,更新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>(); }