Пример #1
0
    // 处理战报
    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;
        }
    }
Пример #2
0
    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;
        });
    }
Пример #3
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);
    }
Пример #4
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>();
    }
Пример #5
0
    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);
    }