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 AddRoomMsgCallBack(params object[] obj_arr) { //房间最多4个人 if (playerData.GetPlayersInfo().Count < 4) { NetworkMessage m = (NetworkMessage)obj_arr[0]; RoomPlayerInfoMessage info = RoomPlayerInfoMessage.GetMessage(m.message); playerData.AddPlayerInfo(m.ip, info); NetworkManager._Instance.AddMessage(102, playerData); Debug.Log("房间加入玩家" + m.ip + " --- " + playerData.GetPlayersInfo().Count); byte[] bytes = NetworkMessage.GetBytes(new NetworkMessage(8, NetworkTools.GetLocalIP(), new byte[0])); SendMsg(m.ip, NetworkConstent.UDPClientPort, bytes); //向所有玩家发送加入信息 foreach (var item in playerData.GetPlayersInfo().Keys) { if (!item.Equals(NetworkTools.GetLocalIP())) { SendPlayerInfosToClient(item); } } } }