Beispiel #1
0
    public void SendTurnCheckData()
    {
        CheckFrame turnData = new CheckFrame();

        turnData.frameNum = (uint)curExecTurnID;
        foreach (Player player in GameSystem.Instance.mClient.mPlayerManager)
        {
            RoleKeyState data = new RoleKeyState();
            data.index      = player.m_roleInfo.index;
            data.position   = GameUtils.Convert(player.position);
            data.hori_angle = player.rotation.eulerAngles.y.raw;
            PlayerState curState = player.m_StateMachine.m_curState;
            data.state = curState != null ? (int)curState.m_eState : 0;
            turnData.roleDatas.Add(data);
        }
        foreach (UBasketball ball in GameSystem.Instance.mClient.mCurMatch.mCurScene.balls)
        {
            BallKeyState data = new BallKeyState();
            data.index    = ball.m_id;
            data.position = GameUtils.Convert(ball.position);
            data.state    = (int)ball.m_ballState;
            turnData.ballDatas.Add(data);
        }
        checkData.Enqueue(turnData);
        while (checkData.Count > 20)
        {
            checkData.Dequeue();
        }
        GameMsgSender.SendTurnCheckData(turnData);
    }
Beispiel #2
0
    void HandleOutSync(Pack pack)
    {
        NotifyOutSync outSync = Serializer.Deserialize <NotifyOutSync>(new MemoryStream(pack.buffer));
        int           turnID  = (int)outSync.frameNum;

        Debug.LogError("Turn out sync, ID: " + turnID + " " + (turnID - 1) * TurnController.GAME_UPDATE_PER_TURN);
        PlayerManager pm       = GameSystem.Instance.mClient.mPlayerManager;
        GameMatch     match    = GameSystem.Instance.mClient.mCurMatch;
        CheckFrame    turnData = match.turnManager.GetTurnCheckData(turnID);

        if (turnData != null)
        {
            foreach (RoleKeyState playerData in turnData.roleDatas)
            {
                Player player = pm.GetPlayerByRoomId(playerData.index);
                Debug.LogError(string.Format("{0} P:{1} Pos:({2},{3},{4}) Angle:{5} State:{6}",
                                             player.m_team.m_side, player.m_id,
                                             playerData.position.x, playerData.position.y, playerData.position.z,
                                             playerData.hori_angle, (PlayerState.State)playerData.state));
            }
            foreach (BallKeyState ballData in turnData.ballDatas)
            {
                UBasketball ball = match.mCurScene.balls.Find(b => b.m_id == ballData.index);
                Debug.LogError(string.Format("Ball:{0} Pos:({1},{2},{3}) State:{4}",
                                             ball.m_id, ballData.position.x, ballData.position.y, ballData.position.z,
                                             (BallState)ball.m_ballState));
            }
        }
    }
Beispiel #3
0
    public static void SendTurnCheckData(CheckFrame checkData)
    {
        NetworkConn conn = GameSystem.Instance.mNetworkManager.m_gameConn;

        if (conn == null)
        {
            return;
        }
        conn.SendPack(0, checkData, MsgID.CheckFrameID);
    }
Beispiel #4
0
    public static void SendTurnValidate(Dictionary <uint, PlayerInfo> playerInfos)
    {
        CheckFrame frameData = new CheckFrame();

        frameData.frameNum = TurnManager.Instance.CurTurnID;
        foreach (var pair in playerInfos)
        {
            PlayerInfo     info       = pair.Value;
            PlayerKeyState playerData = new PlayerKeyState();
            playerData.acc_id   = info.ID;
            playerData.position = GameUtils.Convert(info.moveCtrl.position);
            playerData.velocity = info.moveCtrl.velocity.magnitude.raw;
            playerData.state    = info.state;
            frameData.datas.Add(playerData);
        }
        if (conn != null)
        {
            conn.SendPack(0, frameData, MsgID.CheckFrameID);
        }
    }