Example #1
0
    private void SendSneakEnd()
    {
        //判断是否是玩家死亡
        PVEOverState overState = player.health <= 0 ? PVEOverState.GameOver : PVEOverState.Success;

        moduleLabyrinth.SendLabyrinthSneakOver(overState);
    }
Example #2
0
    public void SendChasePVEState(PVEOverState state)
    {
        CsChaseTaskOver chaseMsg = PacketObject.Create <CsChaseTaskOver>();

        chaseMsg.state    = (sbyte)state;
        chaseMsg.overData = modulePVE.GetPveDatas();
        session.Send(chaseMsg);
    }
Example #3
0
    public void SendPVEState(PVEOverState state, float health = 0, byte anger = 0)
    {
        Logger.LogDetail("pve end stats is {0}", state);
        isSendWin     = state == PVEOverState.Success;
        lastSendState = state;

        if (isTeamMode)
        {
            //如果挑战失败,就退出组队房间
            if (state == PVEOverState.GameOver)
            {
                moduleAwakeMatch.Request_ExitRoom(modulePlayer.id_);
            }
            moduleTeam.SendEndRequest(state);
        }
        else
        {
            switch (reopenPanelType)
            {
            case PVEReOpenPanel.ChasePanel:
            case PVEReOpenPanel.Awake:
                SendChasePVEState(state);
                break;

            case PVEReOpenPanel.PetPanel:
                SendSpritePVEState(state);
                break;

            case PVEReOpenPanel.UnionBoss:
                moduleUnion.SendGetEnd(state);
                break;

            case PVEReOpenPanel.Borderlands:
                if (state == PVEOverState.Success)
                {
                    moduleBordlands.SendFightWin();
                }
                else if (state == PVEOverState.GameOver)
                {
                    moduleBordlands.SendFightLose();
                    //暂时本地结算
                    moduleBordlands.OnBordlandStageFail();
                }
                break;

            case PVEReOpenPanel.Labyrinth:
                moduleLabyrinth.SendChallengeLabyrinthOver(health, anger, state);
                break;

            case PVEReOpenPanel.Dating:
                moduleNPCDating.ChaseFinish(state);
                SendChasePVEState(state);
                break;
            }
        }
    }
Example #4
0
    public void SendLabyrinthSneakOver(PVEOverState state)
    {
        var p = PacketObject.Create <CsMazeSceneSneakOver>();

        p.overState = (byte)state;
        Logger.LogDetail("偷袭完成,发送的偷袭状态是{0}", state);
        //通过发送消息来决定是否是偷袭成功
        isSneakSuccess = state == PVEOverState.Success;
        session.Send(p);
    }
Example #5
0
    public void SendEndRequest(PVEOverState state)
    {
        sendTeamEnd = true;
        var p = PacketObject.Create <CsTeamRequestEnd>();

        p.pveState = (byte)state;
        p.overData = modulePVE.GetPveDatas();

        var level = Level.current as Level_Battle;

        p.hp = level ? level.GetHpForVerification() : new double[] { 0 };

        Send(p);
    }
Example #6
0
    public void SendPVEState(PVEOverState state, Creature player)
    {
        if (Level.current is Level_Train)
        {
            return;
        }
        //胜利或者失败就设置该关卡可以被销毁了
        if (Level.current && Level.current is Level_PVE && state != PVEOverState.RoleDead)
        {
            (Level.current as Level_PVE).SetLevelBehaviourCanDestory();
        }
        byte anger = (byte)Mathf.RoundToInt(player.rageRate * 100f);

        //如果是组队模式,则需要发送EndRequest
        modulePVE.SendPVEState(state, player.healthRate * 100, anger);
    }
Example #7
0
    public void SendChallengeLabyrinthOver(float health, byte anger, PVEOverState overState)
    {
        var p = PacketObject.Create <CsMazeChallengeOver>();

        p.overData  = modulePVE.GetPveDatas();
        p.overState = (byte)overState;
        //失败了要清空怒气
        if (overState == PVEOverState.GameOver)
        {
            p.overData.anger = 0;
        }

        //拷贝发送的消息作为缓存
        p.CopyTo(ref m_lastSendOverMsg);
        session.Send(p);
    }
Example #8
0
 private void ClearPveCache()
 {
     moduleLabyrinth.isSneakSuccess = false;
     isSendWin         = false;
     lastSendState     = PVEOverState.None;
     isFirstEnterStage = false;
     enterForFirstTime = false;
     maxReviveTimes    = -1;
     rebornItemDic.Clear();
     labyrinthBuffPropIds.Clear();
     propToBuffDic.Clear();
     currentReviveTimes   = 0;
     settlementStar       = 0;
     addFriendPoint       = 0;
     addNpcPoint          = 0;
     settlementReward     = null;
     settlementTask       = null;
     duringTranspostScene = false;
     totalMonsterDeathDic.Clear();
 }