SyncFrame LocalFrameRecord(Player TPlayer) { var moving = ControlDirecton(TPlayer); var rotation = RotMove(); var syncFrame = new SyncFrame(0, TPlayer.get_area_id()); //var InputSyncMsg = new InputMessage(player_id, moving); //TODO :改为发送位置! // syncFrame.dump_actions(InputSyncMsg); // var RotateSyncMsg = new RotateMessage(player_id, rotation); // syncFrame.dump_actions(RotateSyncMsg); TPlayer.move(moving);//本地move,获取新的位置 sysTime++; if (sysTime > 3) { var thePos = TPlayer.get_position(); var Tmsg = new PositionMessage(player_id, new Vector2(thePos.x, thePos.z)); Console.Write("LocalFrameRecord posioin" + thePos.x, "," + thePos.z); syncFrame.dump_actions(Tmsg); sysTime = 0; } if (bSYN) { Dictionary <int, Vector2> TPlayers = new Dictionary <int, Vector2>(); for (int n = 0; n < areaManager.areas.Count; ++n) { Area TArea = areaManager.areas[n]; for (int np = 0; np < TArea.logic_mgr.player_list.Count; ++np) { var Tlogic_mgr = TArea.logic_mgr.player_list[np]; if (!TPlayers.ContainsKey(Tlogic_mgr.get_id())) { TPlayers[Tlogic_mgr.get_id()] = new Vector2(Tlogic_mgr.position.x, Tlogic_mgr.position.z); } else { } } } var Tms = new SYNMessage(player_id, TPlayers); syncFrame.dump_actions(Tms); } return(syncFrame); }
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); } else if (msg.msg_type == (int)RequestType.SYNPOS) { SYNMessage spawn = msg as SYNMessage; br.Write(spawn.Players.Count); foreach (var item in spawn.Players) { br.Write(item.Key); br.Write(item.Value.x); br.Write(item.Value.y); } } }