Beispiel #1
0
        /// <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)));
 }
Beispiel #3
0
 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);
 }
Beispiel #4
0
 /// <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);
     }
 }
Beispiel #5
0
 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;
         }
     }
 }
Beispiel #6
0
        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);
        }
Beispiel #7
0
 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);
         }
     }
 }
Beispiel #8
0
        /// <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());
 }