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); }
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)); } } }
public static void SendTurnCheckData(CheckFrame checkData) { NetworkConn conn = GameSystem.Instance.mNetworkManager.m_gameConn; if (conn == null) { return; } conn.SendPack(0, checkData, MsgID.CheckFrameID); }
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); } }