// 处理战报 public void ProcessBattleReport(PBattleReport report) { switch (BattleType) { case LogicBattleType.PVE: PVEManager.Instance.OnBattleResult(report); break; case LogicBattleType.PVP: PVPManager.Instance.OnBattleResult(report); break; case LogicBattleType.WORLD: WorldManager.Instance.OnBattleResult(report); break; } }
public void RequestGetBattleResult(long battleID, bool isWin) { PGetBattleResult data = new PGetBattleResult(); data.battleId = battleID; data.btResult = isWin ? eBattleResult.BTR_WIN : eBattleResult.BTR_FAIL; Net.Send(eCommand.GET_BATTLE_RESULT, data, (buffer) => { PBattleReport ret = Net.Deserialize <PBattleReport>(buffer); if (!Net.CheckErrorCode(ret.errorCode, eCommand.GET_BATTLE_RESULT)) { return; } ProcessBattleReport(ret); BattleID = 0; }); }
public void OnBattleResult(PBattleReport data) { bool isAttacker = UserManager.Instance.EntityID == data.attackerId; if (isAttacker) { if (data.winner == eBattleSide.SIDE_DEFENSER) { // 输了 UIManager.Instance.OpenWindow <UIWorldBattleResultFailView>(); return; } } else { if (data.winner == eBattleSide.SIDE_ATTACKER) { // 输了 UIManager.Instance.OpenWindow <UIWorldBattleResultFailView>(); return; } } // 赢了 // 战斗结果 BattleResult = new WorldBattleResultInfo(); BattleResult.Token = data.reserve1; BattleResult.Money = data.awdGold; BattleResult.Wood = data.awdWood; BattleResult.Stone = data.awdStone; BattleResult.Gold = data.awdYuanbao; UserManager.Instance.Money += BattleResult.Money; UserManager.Instance.Wood += BattleResult.Wood; UserManager.Instance.Stone += BattleResult.Stone; UserManager.Instance.Gold += BattleResult.Gold; UIManager.Instance.OpenWindow <UIWorldBattleResultView>(BattleResult); EventDispatcher.TriggerEvent(EventID.EVENT_UI_MAIN_REFRESH_VALUE); }
// 一场战斗胜利,更新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>(); }
public void OnBattleResult(PBattleReport data) { // 减少攻击次数 --AttackCount; int myRank = 0; int optRank = 0; // 输了的话排名不变 bool isWin = true; bool isAttacker = UserManager.Instance.EntityID == data.attackerId; if (isAttacker) { // 我是进攻方,记录排名情况 myRank = data.pos.x; optRank = data.pos.y; if (data.winner == eBattleSide.SIDE_DEFENSER) { isWin = false; // 输了 UIManager.Instance.OpenWindow <UIPVPBattleResultFailView>(); } } else { // 我是防守方,记录排名情况 myRank = data.pos.y; optRank = data.pos.x; if (data.winner == eBattleSide.SIDE_ATTACKER) { isWin = false; // 输了 UIManager.Instance.OpenWindow <UIPVPBattleResultFailView>(); } } if (!isWin) { MyScore += GameConfig.PVP_SCORE_LOSE_ADD; return; } // 战斗结果 MyScore += GameConfig.PVP_SCORE_WIN_ADD; BattleResult = new PVPBattleResult(); BattleResult.AddScore = GameConfig.PVP_SCORE_WIN_ADD; // 如果我的排名更低的话,则排名提升 if (myRank > optRank) { BattleResult.AddRank = myRank - optRank; MyRank = optRank; } // 每打完一场,更换所有对手 RequestChangePlayer(); // 显示战斗结果 UIManager.Instance.OpenWindow <UIPVPBattleResultView>(BattleResult); }