/// <summary> /// 向玩家发送单个玩家的IP,枪械情况 /// </summary> /// <param name="ip"></param> /// <param name="info"></param> public void SendPlayrMessageInfo(string ip, PlayerInfoMessage info) { byte[] bytes = PlayerInfoMessage.GetBytes(info); NetworkMessage sendM = new NetworkMessage(17, NetworkTools.GetLocalIP(), bytes); SendMsg(ip, NetworkConstent.UDPClientPort, NetworkMessage.GetBytes(sendM)); }
/// <summary> /// 发送可以开始 /// </summary> public void SendWaitStart() { //byte[] bytes = RoomPlayerInfoMessage.GetBytes(new RoomPlayerInfoMessage("", true)); byte[] bytes = PlayerInfoMessage.GetBytes(playerInfo); SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, NetworkMessage.GetBytes(new NetworkMessage(10, NetworkTools.GetLocalIP(), bytes))); }
public static byte[] GetBytes(PlayerInfoMessage message) { byte[] name = Encoding.UTF8.GetBytes(message.playerName + "*" + message.playerIP); byte[] newBytes = new byte[12 + name.Length]; BitConverter.GetBytes(message.ID).CopyTo(newBytes, 0); BitConverter.GetBytes(message.gun1ID).CopyTo(newBytes, 4); BitConverter.GetBytes(message.gun2ID).CopyTo(newBytes, 8); name.CopyTo(newBytes, 12); return(newBytes); }
/// <summary> /// 向房间内的玩家发送开始游戏请求 /// </summary> public void SendOtherPlayerStartGame() { RoomSingle.AddPlayer(playerInfo); byte[] infos = PlayerInfoMessage.GetBytes(RoomSingle.GetInfos()[NetworkTools.GetLocalIP()]); byte[] bytes = NetworkMessage. GetBytes(new NetworkMessage(13, NetworkTools.GetLocalIP(), infos)); foreach (var ip in playerData.GetPlayersInfo().Keys) { SendMsg(ip, NetworkConstent.UDPClientPort, bytes); } }
public static void AddPlayer(PlayerInfoMessage info) { if (infos.ContainsKey(info.playerIP)) { lock (infos) { infos[info.playerIP] = info; } } else if (infos.Count < 4) { lock (infos) { infos[info.playerIP] = info; } } }
void CreateRoom(string roomName) { room = new RoomMessage(roomName, NetworkTools.GetLocalIP()); NetworkManager._Instance.AddCallBack(2, SendRoomMsg); NetworkManager._Instance.AddCallBack(7, AddRoomMsgCallBack); NetworkManager._Instance.AddCallBack(9, QuitRoomMsgCallBack); NetworkManager._Instance.AddCallBack(10, UpdateRoomPlayerMsgCallBack); NetworkManager._Instance.AddCallBack(14, ReciveGetPlayerInfos); StartServer(); playerData = new RoomPlayerData(); playerData.AddPlayerInfo(NetworkTools.GetLocalIP(), new RoomPlayerInfoMessage("", true, NetworkTools.GetLocalIP())); playerInfo = new PlayerInfoMessage(1, 101, 102, "房主", NetworkTools.GetLocalIP()); //RoomSingle.AddPlayer(new PlayerInfoMessage(2,104,105,"房主",NetworkTools.GetLocalIP())); NetworkManager._Instance.AddMessage(102, playerData); EventCenterManager._Instance.AddListener(EventType.GetPlayerInfo, GetPlayerInfoCallBack); EventCenterManager._Instance.AddListener(EventType.SetPlayerInfo, SetPlayerInfoCallBack); }
protected override void NetworkCallback(object message) { if (message.GetType().ToString().Equals("Network.NetworkMessage")) { Debug.Log("客户端接收"); NetworkMessage nm = (NetworkMessage)message; if (nm.type == 13) { PlayerInfoMessage info = PlayerInfoMessage.GetMessage(nm.message); RoomSingle.AddPlayer(info); //Debug.Log("开始游戏"); UIManager._Instance.CloseWindow(WindowName.WaitStartRoom); LoadSceneManager._Instance.LoadScene(SceneName.Mission1, StartGameCallBack); //NetworkManager._Instance.RemoveCallBack(13, GetNetworkMsgCallBack); } else if (nm.type == 10) { RoomPlayerInfoMessage info = RoomPlayerInfoMessage.GetMessage(nm.message); playerData.SetPlayerCanStart(info.playerIP, info.canStart); wait.UpdatePanel(playerData); } else if (nm.type == 15) { RoomPlayerInfoMessage info = RoomPlayerInfoMessage.GetMessage(nm.message); playerData.AddPlayerInfo(info.playerIP, info); wait.UpdatePanel(playerData); } else if (nm.type == 16) { RoomPlayerInfoMessage info = RoomPlayerInfoMessage.GetMessage(nm.message); playerData.RemovePlayerInfo(info.playerIP); RoomSingle.RemovePlayer(info.playerIP); wait.UpdatePanel(playerData); } else if (nm.type == 17) { PlayerInfoMessage info = PlayerInfoMessage.GetMessage(nm.message); RoomSingle.AddPlayer(info); playerData.SetPlayerCanStart(info.playerIP, true); wait.UpdatePanel(playerData); } } }
/// <summary> /// 更新玩家信息 /// </summary> /// <param name="obj_arr"></param> void UpdateRoomPlayerMsgCallBack(params object[] obj_arr) { NetworkMessage m = (NetworkMessage)obj_arr[0]; PlayerInfoMessage info = PlayerInfoMessage.GetMessage(m.message); playerData.SetPlayerCanStart(m.ip, true); NetworkManager._Instance.AddMessage(102, playerData); RoomSingle.AddPlayer(info); //向其他玩家发送玩家的装备情况 foreach (var item in playerData.GetPlayersInfo().Keys) { SendPlayrMessageInfo(item, info);//只要接到玩家的进入游戏的信息,那么玩家就进入了准备状态 } //向所有玩家发送玩家的状态更新 //foreach (var item in playerData.GetPlayersInfo().Keys) //{ // SendUpdatePlayrInfo(item, new RoomPlayerInfoMessage("",true, m.ip)); //} }
public WaitStartRoomSendClient() { playerInfo = new PlayerInfoMessage(1, 101, 102, "玩家", NetworkTools.GetLocalIP()); }