コード例 #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));
        }
コード例 #2
0
 /// <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)));
 }
コード例 #3
0
 /// <summary>
 /// 发送退出房间
 /// </summary>
 public void SendQuitRoom()
 {
     if (client != null)
     {
         SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort,
                 NetworkMessage.GetBytes(new NetworkMessage(9, NetworkTools.GetLocalIP(), new byte[0])));
     }
 }
コード例 #4
0
        /// <summary>
        /// 向所有客户端发送房间关闭信息
        /// </summary>
        void SendAllClose()
        {
            server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
            EndPoint       point = new IPEndPoint(IPAddress.Broadcast, NetworkConstent.UDPClientPort);
            NetworkMessage m     = new NetworkMessage(3, NetworkTools.GetLocalIP(), Encoding.UTF8.GetBytes(NetworkTools.GetLocalIP()));

            server.SendTo(NetworkMessage.GetBytes(m), point);
        }
コード例 #5
0
 /// <summary>
 /// 向玩家发送房间内所有玩家信息
 /// </summary>
 /// <param name="ip"></param>
 public void SendPlayerInfosToClient(string ip)
 {
     foreach (var item in playerData.GetPlayersInfo().Keys)
     {
         byte[]         bytes = RoomPlayerInfoMessage.GetBytes(playerData.GetPlayersInfo()[item]);
         NetworkMessage sendM = new NetworkMessage(15, NetworkTools.GetLocalIP(), bytes);
         SendMsg(ip, NetworkConstent.UDPClientPort, NetworkMessage.GetBytes(sendM));
     }
 }
コード例 #6
0
        /// <summary>
        /// 发送Boss的位置信息
        /// </summary>
        /// <param name="t"></param>
        /// <param name="id"></param>
        /// <param name="listNum"></param>
        public void SendBossTransformMsg(Transform t, int id)
        {
            byte[] by = EnemyInfoMessage.GetBytes(
                new EnemyInfoMessage(t.position, t.rotation.eulerAngles, id, 0));
            NetworkMessage message = new NetworkMessage(70, NetworkTools.GetLocalIP(), by);

            byte[] bytes = NetworkMessage.GetBytes(message);
            SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes);
        }
コード例 #7
0
        /// <summary>
        /// 同步小怪的目标
        /// </summary>
        /// <param name="hurt"></param>
        /// <param name="id"></param>
        /// <param name="listNum"></param>
        public void SendEnemyTargetMsg(string ip, int id, int listNum)
        {
            byte[] by = EnemyTargetMessage.GetBytes(
                new EnemyTargetMessage(ip, id, listNum));
            NetworkMessage message = new NetworkMessage(63, NetworkTools.GetLocalIP(), by);

            byte[] bytes = NetworkMessage.GetBytes(message);
            SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes);
        }
コード例 #8
0
        /// <summary>
        /// 发送Boss受到伤害
        /// </summary>
        /// <param name="hurt"></param>
        /// <param name="id"></param>
        /// <param name="listNum"></param>
        public void SendBossHurtMsg(float hurt, int id)
        {
            byte[] by = EnemyHurtMessge.GetBytes(
                new EnemyHurtMessge(hurt, id, 0));
            NetworkMessage message = new NetworkMessage(72, NetworkTools.GetLocalIP(), by);

            byte[] bytes = NetworkMessage.GetBytes(message);
            SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes);
        }
コード例 #9
0
        /// <summary>
        /// Boss的状态信息
        /// </summary>
        /// <param name="state"></param>
        /// <param name="id"></param>
        /// <param name="listNum"></param>
        public void SendBossStateMsg(BossState state, BossAtkState s, int id)
        {
            byte[] by = BossStateMessage.GetBytes(
                new BossStateMessage(state, s));
            NetworkMessage message = new NetworkMessage(71, NetworkTools.GetLocalIP(), by);

            byte[] bytes = NetworkMessage.GetBytes(message);
            SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes);
        }
コード例 #10
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);
     }
 }
コード例 #11
0
        public override void StartServer(int port)
        {
            base.StartServer(port);
            NetworkMessage m = new NetworkMessage(2, NetworkTools.GetLocalIP(), Encoding.UTF8.GetBytes(NetworkTools.GetLocalIP()));

            NetworkManager._Instance.AddCallBack(1, GetRoomMsgCallBack);
            NetworkManager._Instance.AddCallBack(3, GetCloseRoomMsgCallBack);
            rooms = new RoomData();

            message = NetworkMessage.GetBytes(m);
        }
コード例 #12
0
        /// <summary>
        /// 向客户端发送房间信息
        /// </summary>
        /// <param name="obj_arr"></param>
        void SendRoomMsg(params object[] obj_arr)
        {
            NetworkMessage m   = (NetworkMessage)obj_arr[0];
            NetworkMessage rom = new NetworkMessage(1, room.ip,
                                                    RoomMessage.GetBytes(room));

            message = NetworkMessage.GetBytes(rom);
            string ip = Encoding.UTF8.GetString(m.message);

            //NetworkTools.PrintMessage("发送房间信息" + ip);
            SendMsg(ip, NetworkConstent.UDPClientPort, message);
        }
コード例 #13
0
 public void SendPlayerShootToServer()
 {
     try
     {
         NetworkMessage message = new NetworkMessage(18, NetworkTools.GetLocalIP(), new byte[0]);
         byte[]         bytes   = NetworkMessage.GetBytes(message);
         SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes);
     }
     catch (Exception e)
     {
         Debug.LogError(e.ToString());
     }
 }
コード例 #14
0
 /// <summary>
 /// 同步状态的方法
 /// </summary>
 /// <param name="state"></param>
 public void SendPlayerHurtToServer(float hurt)
 {
     try
     {
         NetworkMessage message = new NetworkMessage(6, NetworkTools.GetLocalIP(),
                                                     PlayerHurtMessage.GetBytes(new PlayerHurtMessage(hurt)));
         byte[] bytes = NetworkMessage.GetBytes(message);
         SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes);
     }
     catch (Exception e)
     {
         Debug.LogError(e.ToString());
     }
 }
コード例 #15
0
 /// <summary>
 /// 想要加入的房间
 /// </summary>
 /// <param name="ip"></param>
 public void SendAddRoom(string ip)
 {
     try
     {
         IPAddress.Parse(ip);
         Debug.Log("请求加入: " + ip);
     }
     catch (System.Exception)
     {
         Debug.LogError("请输入有效IP");
         return;
     }
     byte[] info = RoomPlayerInfoMessage.GetBytes(new RoomPlayerInfoMessage("", false, NetworkTools.GetLocalIP()));
     SendMsg(ip, NetworkConstent.UDPServerPort,
             NetworkMessage.GetBytes(new NetworkMessage(7, NetworkTools.GetLocalIP(), info)));
 }
コード例 #16
0
 /// <summary>
 /// 同步状态的方法
 /// </summary>
 /// <param name="state"></param>
 public void SendPlayerStateToServer(PlayerState playerState, AtkState atkState)
 {
     try
     {
         NetworkMessage message = new NetworkMessage(5, NetworkTools.GetLocalIP(),
                                                     PlayerStateMessage.GetBytes(new PlayerStateMessage(playerState,
                                                                                                        atkState)));
         byte[] bytes = NetworkMessage.GetBytes(message);
         //Debug.Log("发送位置数据");
         //测试
         SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes);
     }
     catch (Exception e)
     {
         Debug.LogError(e.ToString());
     }
 }
コード例 #17
0
 /// <summary>
 /// 同步位置方法
 /// </summary>
 /// <param name="trans"></param>
 public void SendTranfromToServer(Transform trans, float gunAngle)
 {
     try
     {
         NetworkMessage message = new NetworkMessage(4, NetworkTools.GetLocalIP(),
                                                     TransformMessage.GetBytes(new TransformMessage(
                                                                                   trans.position, trans.rotation.eulerAngles, gunAngle)));
         byte[] bytes = NetworkMessage.GetBytes(message);
         //Debug.Log("发送位置数据");
         //测试
         SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, bytes);
     }
     catch (Exception e)
     {
         Debug.LogError(e.ToString());
     }
 }
コード例 #18
0
 /// <summary>
 /// 向所有的客户端发送同步消息
 /// </summary>
 /// <param name="obj_arr"></param>
 void SendMsgToAllClient(params object[] obj_arr)
 {
     try
     {
         NetworkMessage message = (NetworkMessage)obj_arr[0];
         //Debug.Log("收到客户端发来消息" + message.type);
         byte[] bytes = NetworkMessage.GetBytes(message);
         for (int i = 0; i < players.Count; i++)
         {
             // Debug.Log("向ip" + players[i] + "发送数据");
             SendMsg(players[i], NetworkConstent.UDPBattleClientPort, bytes);
         }
     }
     catch (Exception e)
     {
         Debug.LogError(e.ToString());
     }
 }
コード例 #19
0
 /// <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);
             }
         }
     }
 }
コード例 #20
0
 public void SendGetRoomPlayerInfos()
 {
     SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort,
             NetworkMessage.GetBytes(new NetworkMessage(14, NetworkTools.GetLocalIP(), null)));
 }
コード例 #21
0
 /// <summary>
 /// 子弹爆炸
 /// </summary>
 /// <param name="p"></param>
 /// <param name="r"></param>
 /// <param name="type"></param>
 /// <param name="num"></param>
 public void SendExplosion(Vector3 p, Vector3 r, int type, int num)
 {
     byte[] b = BulletMessage.GetBytes(new BulletMessage(p, r, type, num));
     byte[] m = NetworkMessage.GetBytes(new NetworkMessage(51, NetworkTools.GetLocalIP(), b));
     SendMsg(RoomSingle.roomIP, NetworkConstent.UDPServerPort, m);
 }