public static void SerializeData(BinaryWriter br, CustomSyncMsg msg) { br.Write((short)msg.player_id); br.Write((char)msg.msg_type); if (msg.msg_type == (int)RequestType.ENTERAREA) { EnterAreaMessage enterArea = msg as EnterAreaMessage; // br.Write(enterArea.id); br.Write(enterArea.health);; br.Write(enterArea.position.x); br.Write(enterArea.position.y); br.Write(enterArea.position.z); br.Write(enterArea.direction.x); br.Write(enterArea.direction.y); br.Write(enterArea.direction.z); //br.Write(enterArea.rotation.x); //br.Write(enterArea.rotation.y); } else if (msg.msg_type == (int)RequestType.INPUT) { InputMessage input = msg as InputMessage; // br.Write(input.id); br.Write(input.moving.x); // br.Write(input.moving.y); br.Write(input.moving.z); } else if (msg.msg_type == (int)RequestType.LEAVEAREA) { LeaveAreaMessage leaveArea = msg as LeaveAreaMessage; //br.Write(leaveArea.id); } else if (msg.msg_type == (int)RequestType.ROTATE) { RotateMessage rotate = msg as RotateMessage; // br.Write(rotate.id); br.Write(rotate.delta.x); br.Write(rotate.delta.y); } else if (msg.msg_type == (int)RequestType.POSITION) { PositionMessage rotate = msg as PositionMessage; //br.Write(rotate.id); br.Write(rotate.delta.x); br.Write(rotate.delta.y); } else if (msg.msg_type == (int)RequestType.SPAWN) { SpawnMessage spawn = msg as SpawnMessage; //br.Write(spawn.id); br.Write(spawn.position.x); br.Write(spawn.position.y); br.Write(spawn.position.z); } }
public void RecordCustomSyncMsg(CustomSyncMsg customSyncMsg) { if (TotallFrames.Count > 0) { SyncFrame CurrentSyncFrame = TotallFrames[TotallFrames.Count - 1]; CurrentSyncFrame.conbine_msg(customSyncMsg); } else { UnityEngine.Debug.Log("RecordCustomSyncMsg TotallFrames count" + 0); } }
public void handle_msg(CustomSyncMsg msg) { if (msg.msg_type == (int)RequestType.SPAWN) { // Console.WriteLine(" SPAWN_msg " + msg.msg_type); SpawnMessage s_msg = msg as SpawnMessage; spawn_player(msg.player_id, s_msg.position); } else if (msg.msg_type == (int)RequestType.INPUT) { // Console.WriteLine(" INPUT_msg " + msg.msg_type); InputMessage i_msg = msg as InputMessage; // Console.WriteLine( "client " + game.player_id + " player_id: " + msg.player_id + " area_id: " + mArea.get_area_id() + "handle input: player_id:" + msg.player_id + "move direction" + i_msg.moving); on_receive_player_input(msg.player_id, i_msg.moving); } else if (msg.msg_type == (int)RequestType.ROTATE) { RotateMessage r_msg = msg as RotateMessage; on_plyaer_rotate(msg.player_id, r_msg.delta); } else if (msg.msg_type == (int)RequestType.ENTERAREA) { //Console.WriteLine("msg.player_id " + msg.player_id +" ENTER_AREA_msg " + mgr_id); EnterAreaMessage e_msg = msg as EnterAreaMessage; on_player_enter_area(msg.player_id, e_msg.health, e_msg.rotation, e_msg.direction, e_msg.position); } else if (msg.msg_type == (int)RequestType.LEAVEAREA) { // Console.WriteLine("msg.player_id " + msg.player_id + " LEAVE_AREA_msg " + mgr_id); on_player_leave_area(msg.player_id); } else if (msg.msg_type == (int)RequestType.POSITION) { PositionMessage p_msg = msg as PositionMessage; on_player_position(msg.player_id, p_msg.delta); } }
//帧内transaction记录 // 这应该是一个统一msg的类list变量,Area通过enum一些cmd handler去做相应操作 public void dump_actions(CustomSyncMsg msg) { msg_list.Add(msg); }
public void conbine_msg(CustomSyncMsg msg) { this.msg_list.Add(msg); }