示例#1
0
 public void SendDataTo(int playerID, NetworkMsg msg)
 {
     if (PlayerIDToConnID.ContainsKey(playerID))
     {
         int connID = PlayerIDToConnID[playerID];
         networkManager.SendDataTo(connID, msg);
     }
 }
示例#2
0
    /// <summary>
    /// 将服务器发的的bytes进行解析
    /// </summary>
    private void AnalyticalNetworkMsg()
    {
        while (ringBuf.Size >= sizeof(uint))
        {
            byte[] lengthByte = new byte[sizeof(uint)];

            ringBuf.CopyTo(0, lengthByte, 0, lengthByte.Length);

            uint msgLength = BitConverter.ToUInt32(lengthByte, 0);

            msgLength = NetworkMsg.NetworkToHostOrder(msgLength);

            if (ringBuf.Size >= msgLength)
            {
                byte[] msgdata = new byte[msgLength];

                ringBuf.Get(msgdata);

                if (msgLength == 0)
                {
                    ringBuf.Clear();
                    return;
                }

                using (MemoryStream stream = new MemoryStream(msgdata))
                {
                    BinaryReader br = new BinaryReader(stream);

                    NetworkMsg Nmsg = new NetworkMsg();

                    try
                    {
                        Nmsg.length   = NetworkMsg.NetworkToHostOrder(br.ReadInt32());
                        Nmsg.msgId    = NetworkMsg.NetworkToHostOrder(br.ReadInt32());
                        Nmsg.sequence = (short)NetworkMsg.NetworkToHostOrder(br.ReadInt16());
                    }
                    catch (Exception)
                    {
                        throw;
                    }

                    // 10 is header length    length:4  msgId:4 sequence:2
                    byte[] data = br.ReadBytes((int)msgLength - 10);

                    Nmsg.data = data;

                    lock (objThread)
                    {
                        mMsgEvents.Enqueue(Nmsg);
                    }
                }
            }
            else
            {
                break;
            }
        }
    }
        //一个robot发送游戏开始消息
        public void send_start_game(Robot robot)
        {
            Log.INFO("sending start msg..");
            NetworkMsg msg = new NetworkMsg();

            msg.MsgType = Type.StartGame;
            robot.m_clientSocket.dump_send_queue(msg);
            robot.m_clientSocket.send_queue_data();
        }
        //接收到客户端的数据事件
        private void process_receive(SocketAsyncEventArgs e)
        {
            // check if the remote host closed the connection
            if (e.SocketError == SocketError.Success && e.BytesTransferred > 0)
            {
                AsyncUserToken            token  = e.UserToken as AsyncUserToken;
                System.Net.Sockets.Socket socket = token.Socket;



                //放入对应的robot的queue中
                int   socketId = m_robotSystem.get_socketToRobotMap()[socket];
                Robot robot    = m_robotSystem.get_robots()[socketId];

                byte[] data = new byte[e.BytesTransferred];
                Array.Copy(e.Buffer, e.Offset, data, 0, data.Length);
                lock (token.Buffer)
                {
                    token.Buffer.AddRange(data);
                }


                do// (packedDataOffset < e.BytesTransferred)
                {
                    byte[] lengthByte = token.Buffer.GetRange(0, 4).ToArray();

                    int length = BitConverter.ToInt32(lengthByte, 0);

                    if (length > token.Buffer.Count - 4)
                    {
                        break;
                    }

                    byte[] msgData = token.Buffer.GetRange(4, length).ToArray();
                    lock (token.Buffer)
                    {
                        token.Buffer.RemoveRange(0, length + 4);
                    }
                    //放入对应的robot的queue中
                    NetworkMsg netMsg = PBSerializer.deserialize <NetworkMsg>(msgData);
                    robot.m_clientSocket.dump_receive_queue(netMsg);
                } while (token.Buffer.Count > 4);


                Interlocked.Add(ref m_totalBytesRead, e.BytesTransferred);


                if (!socket.ReceiveAsync(e))
                {
                    process_receive(e);
                }
            }
            else
            {
                close_clientSocket(e);
            }
        }
示例#5
0
 public void AddSendCache(NetworkMsg msg)
 {
     byte[] bytes = Serialization.SerializeData(msg, msg);
     if (bytes != null)
     {
         bytes = NetCommon.Encode(bytes);
         SendCache.Enqueue(bytes);
     }
 }
        private void load_nearby_area_msg(Robot robot, List <Robot> robots)
        {
            int areaId = robot.m_mapComponent.m_areaId;

            int[,] offset = new int[, ]
            {
                { -1, -1 },
                { 0, -1 },
                { 1, -1 },
                { -1, 0 },
                { 1, 0 },
                { -1, 1 },
                { 0, 1 },
                { 1, 1 }
            };
            int y = areaId / (int)m_areaAcount;
            int x = areaId % (int)m_areaAcount;
            //发送robot周围区域的所有robots的位置信息
            NetworkMsg robotDataMsg = new NetworkMsg();

            robotDataMsg.MsgType = Type.RobotsData;
            for (int i = 0; i < 8; i++)
            {
                int nearbyX = x + offset[i, 0];
                int nearbyY = y + offset[i, 1];

                if (nearbyX < 0 || nearbyX >= m_areaAcount || nearbyY < 0 || nearbyY >= m_areaAcount)
                {
                    continue;
                }

                int        nearbyAreaId     = nearbyX + (int)m_areaAcount * nearbyY;
                Area       nearbyArea       = m_areasMap[nearbyAreaId];
                List <int> nearbyRobotsList = nearbyArea.get_robotsIdList();
                for (int k = 0; k < nearbyRobotsList.Count; k++)
                {
                    int nearbyRobotId = nearbyRobotsList[k];

                    RobotData nearbyRobotData = new RobotData();
                    nearbyRobotData.ClientInfo = new ClientInfo();
                    nearbyRobotData.Position   = new Position();
                    nearbyRobotData.ClientInfo.RobotSocketId = nearbyRobotId;
                    nearbyRobotData.Position = robots[nearbyRobotId].m_mapComponent.m_pos;
                    robotDataMsg.RobotData.Add(nearbyRobotData);
                }
            }
            //发送robot自己的位置信息
            RobotData robotData = new RobotData();

            robotData.ClientInfo = new ClientInfo();
            robotData.Position   = new Position();
            robotData.ClientInfo.RobotSocketId = robot.m_socketId;
            robotData.Position = robot.m_mapComponent.m_pos;
            robotDataMsg.RobotData.Add(robotData);
            robot.m_clientSocket.dump_send_queue(robotDataMsg);
        }
        public byte[] WriteArray(NetworkMsg type, byte[] tokenBytes)
        {
            BasePacket p = new BasePacket(8 + 32 + tokenBytes.Length);

            p.WriteByte((byte)type);
            p.WriteInt(tokenBytes.Length);
            p.WriteByteArray(tokenBytes);

            return(p.ByteBuffer);
        }
示例#8
0
    public static void CMD_ENTERROOM(NetworkMsg msg)
    {
        Res_enter xmsg = new Res_enter();

        using (MemoryStream stream = new MemoryStream(msg.data))
        {
            xmsg = ProtoBuf.Serializer.Deserialize <Res_enter>(stream);
        }
        Network.Myplayer.m_iRoomID = xmsg.m_iRoomID;
        CMD_ENTERROOM_result       = xmsg.m_nResultID;
    }
示例#9
0
 /// <summary>
 /// Sends a MsgReceived event
 /// </summary>
 /// <param name="msg"></param>
 protected void OnMsgReceived(NetworkMsg msg)
 {
     if (msg is ClientDisconnectMsg)
     {
         OnDisconnected(false);
     }
     else
     {
         MsgReceived?.Invoke(this, new MsgEventArgs(msg));
     }
 }
示例#10
0
    public static void MSG_FRIEND_OPT_ADD(NetworkMsg msg)
    {
        Friend_resAddNotify res = new Friend_resAddNotify();

        using (MemoryStream stream = new MemoryStream(msg.data))
        {
            res = ProtoBuf.Serializer.Deserialize <Friend_resAddNotify>(stream);
        }

        if (res.resultID == (int)ResultID.result_id_success && res.accept == true)
        {
            if (Network.name == res.Name2)
            {
                Network.Friend_list[Network.Friend_cnt].name    = Network.Find_Friend.name;
                Network.Friend_list[Network.Friend_cnt].sex     = Network.Find_Friend.sex;
                Network.Friend_list[Network.Friend_cnt].exp     = Network.Find_Friend.exp;
                Network.Friend_list[Network.Friend_cnt].status  = Network.Find_Friend.status;
                Network.Friend_list[Network.Friend_cnt].wxLogin = Network.Find_Friend.wxLogin;
                if (Network.Find_Friend.wxLogin == true)
                {
                    Network.Friend_list[Network.Friend_cnt].wxHead = Network.Find_Friend.wxHead;
                }
                Network.Friend_cnt++;
            }
            else
            {
                //Network.Find_Friend.name = res.Name2;
                //Network.Find_Friend.sex = 1;
                //Network.Find_Friend.exp = 0;
                //Network.Find_Friend.status = 0;
                Network.Friend_list[Network.Friend_cnt].name    = Network.Added_Friend.name;
                Network.Friend_list[Network.Friend_cnt].sex     = Network.Added_Friend.sex;
                Network.Friend_list[Network.Friend_cnt].exp     = Network.Added_Friend.exp;
                Network.Friend_list[Network.Friend_cnt].status  = Network.Added_Friend.status;
                Network.Friend_list[Network.Friend_cnt].wxLogin = Network.Added_Friend.wxLogin;
                if (Network.Added_Friend.wxLogin == true)
                {
                    Network.Friend_list[Network.Friend_cnt].wxHead = Network.Added_Friend.wxHead;
                }
                Network.Friend_cnt++;
            }
            Network.mySort();
            EventDispatcher.DispatchEvent("EventUpdateFriendList", null, null);
        }
        else if (res.resultID == (int)ResultID.result_id_success && res.accept == false)   //拒绝
        {
            if (Network.name == res.Name2)
            {
                EventDispatcher.DispatchEvent("EventShowMessageUIwithRefuse", null, null);
            }
        }
    }
 public void SendDataTo(int clientID, NetworkMsg msg)
 {
     if (msg != null)
     {
         lock (Serialization.SerializationLock)
         {
             //NetCommon.WriteMessage("roomId: " +msg.uid + "sends msg to client: " + clientID);
             // UnityEngine.Debug.Log("send Date Size " );
             Client client = server.clients[clientID];
             client.BeginSend(msg);
         }
     }
 }
示例#12
0
    public static void MSG_FRIEND_GETINFO(NetworkMsg msg)
    {
        Friend_resGetInfo res = new Friend_resGetInfo();

        using (MemoryStream stream = new MemoryStream(msg.data))
        {
            res = ProtoBuf.Serializer.Deserialize <Friend_resGetInfo>(stream);
        }


        if (res.resultID == (int)ResultID.result_id_success)
        {
            Find_Friend.name     = res.m_NameOther;
            Find_Friend.sex      = res.sex;
            Find_Friend.exp      = res.exp;
            Find_Friend.game_cnt = res.battleCnt;
            Find_Friend.game_win = res.winCnt;
            Find_Friend.status   = res.isOnline ? 1 : 0;

            if (Find_Friend.name == Network.name)
            {
                Find_Friend.relation = 0;
            }
            else
            {
                Find_Friend.relation = 2;
                for (int i = 0; i < Friend_cnt; i++)
                {
                    if (Find_Friend.name == Friend_list[i].name)
                    {
                        Find_Friend.relation = 1;
                        break;
                    }
                }
            }
            Find_Friend.wxLogin = res.wxLogin;
            if (res.wxLogin == true)
            {
                Find_Friend.wxHead = res.wxHead;
            }

            //弹窗显示信息
            EventDispatcher.DispatchEvent("EventShowInfomationUI", null, null);
        }
        else
        {
            //用户不存在或者输入不合法
            EventDispatcher.DispatchEvent("EventShowMessageUIwithString", null, null);
        }
    }
示例#13
0
        public void SetToken(int dataSize, byte[] data)
        {
            //Initialization
            NetworkMsg msgType = NetworkMsg.Unknown;
            byte       type;
            int        size;
            //Read the packet and convert it to a byte array
            IMessageRider token = SockInterface.ReadToken(dataSize, data, out type, out size);

            //Convert the type into a enum readable type
            msgType = (NetworkMsg)type;
            //Handle the token
            HandleToken(msgType, token);
            SocketLog.Info("Set token type {0} for connection {1}", msgType, ConnectionInfo.Peer.ConnectId);
        }
示例#14
0
    public static void CMD_MAP_MATCH(NetworkMsg msg)
    {
        Res_merge xmsg = new Res_merge();

        using (MemoryStream stream = new MemoryStream(msg.data))
        {
            xmsg = ProtoBuf.Serializer.Deserialize <Res_merge>(stream);
        }

        CMD_MAP_MATCH_result = xmsg.m_nresultid;
        if (CMD_MAP_MATCH_result == (int)ResultID.result_id_success)
        {
            gameInfo = xmsg;
        }
    }
示例#15
0
    public void SendData(NetworkMsg msg)
    {
        int currentindx = 4;
        var tbuffer     = NetCommon.Encode(Serialization.Serialize(msg));

        Array.Copy(tbuffer, 0, BigRecivebuffer, currentindx, tbuffer.Length);
        currentindx += tbuffer.Length;


        if (currentindx > 4)
        {
            System.Buffer.BlockCopy(BitConverter.GetBytes(currentindx - 4), 0, BigRecivebuffer, 0, 4);

            clientSocket.SendData(BigRecivebuffer, currentindx);
        }
    }
示例#16
0
    public static T         DeserializeMsg <T>(NetworkMsg msg, bool showLog)
    {
        T rsp;

        using (MemoryStream stream = new MemoryStream(msg.data))
        {
            rsp = ProtoBuf.Serializer.Deserialize <T>(stream);
        }

        if (showLog)
        {
            PrintRecivedMsgProperties(rsp);
        }


        return(rsp);
    }
示例#17
0
    /// <summary>
    /// 邀请相关
    /// </summary>
    public static void MSG_FRIEND_INVITATION(NetworkMsg msg)
    {
        Friend_invitation res = new Friend_invitation();

        using (MemoryStream stream = new MemoryStream(msg.data))
        {
            res = ProtoBuf.Serializer.Deserialize <Friend_invitation>(stream);
        }
        if (res.ResultID == (int)ResultID.result_id_success)
        {
            //消息发送成功
        }
        else
        {
            //弹窗用户不存在或者非法
        }
    }
示例#18
0
        //发送处理完的所有的robot的信息
        public void send_robots_data()
        {
            List <Robot> robots = RobotSystem.get_singleton().get_robots();

            lock (robots)
            {
                foreach (Robot robot in robots)
                {
                    Queue <NetworkMsg> sendQue = robot.m_clientSocket.load_send_queue();
                    while (sendQue.Count > 0)
                    {
                        NetworkMsg msg = sendQue.Dequeue();
                        m_tcpServer.send_networkMessage(msg, robot.m_clientSocket.m_socket);
                    }
                }
            }
        }
示例#19
0
 public void generate_robot(Socket clientSocket)
 {
     lock (addRobotLocker)
     {
         Position initPos = generate_init_position();
         Robot    robot   = new Robot(m_socketId, clientSocket, initPos);
         m_robots.Add(robot);
         m_socketToRobotMap.Add(clientSocket, m_socketId);
         m_socketId++;
         m_numrobots++;
         //返回给client sockectId
         NetworkMsg connectedMsg = new NetworkMsg();
         connectedMsg.MsgType  = Type.ConnectedId;
         connectedMsg.SocketId = robot.m_socketId;
         robot.m_clientSocket.dump_send_queue(connectedMsg);
     }
 }
示例#20
0
    public static void MSG_FRIEND_DEL(NetworkMsg msg)
    {
        Friend_add_del res = new Friend_add_del();

        using (MemoryStream stream = new MemoryStream(msg.data))
        {
            res = ProtoBuf.Serializer.Deserialize <Friend_add_del>(stream);
        }

        if (res.ResultID == (int)ResultID.result_id_success)
        {
            //消息发送成功
        }
        else
        {
            //消息发送失败
        }
    }
示例#21
0
        /// <summary>
        /// Deserializes a string version of an arbitrary NetworkMessage and send a MsgReceived event
        /// </summary>
        /// <param name="message"></param>
        private void ProcessMessage(string message)
        {
            NetworkMsg msg = null;

            try
            {
                msg = NetworkMsg.Deserialize(message);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine($"Failed to deserialize message: {ex.Message}");
            }

            if (msg != null)
            {
                OnMsgReceived(msg);
            }
        }
示例#22
0
        public void ClientReceiveMessageTest()
        {
            var stream = new MemoryStreamThreadSafeSeek();
            var writer = new StreamWriter(stream);

            var        client  = new MuClient(stream);
            NetworkMsg rcvdMsg = null;

            client.MsgReceived += (s, e) => rcvdMsg = e.Msg;

            var msg = new FakeNetworkMsg()
            {
                Content = "ReceiveTest"
            };

            writer.WriteAndRewind(msg.Serialize());
            Thread.Sleep(110);
            Assert.AreEqual(msg, rcvdMsg);
        }
示例#23
0
        public byte[] WriteToken(IMessageRider token, NetworkMsg type)
        {
            byte[] tokenArray = token.ToByteArray();
            //Handle null tokens
            int tokenSize = 0;

            if (tokenArray != null)
            {
                tokenSize = tokenArray.Length;
            }
            //The size is a byte in bits (8) + the size of the token to transmit
            Packet p = new Packet(8 + tokenSize);

            p.WriteByte((byte)type);
            p.WriteToken(token);
            p.FinishWriting(); // Not necessary as our defination of this packet was precise, but still good form

            return(p.ByteBuffer);
        }
示例#24
0
    public static byte[] Serialize(NetworkMsg networkMsg)//在这可以继续添加要发送的Msg
    {
        var p_TheAllMsg = new DS_protocol.p_AllMsg();

        p_TheAllMsg.player_id = networkMsg.player_id;
        p_TheAllMsg.type      = networkMsg.type;

        if (networkMsg.type == (int)CmdType.ASKFRAME)
        {
            var askFrame = networkMsg as AskFrame;
            p_TheAllMsg.AskFrame = new DS_protocol.p_AskFrame();

            askFrame.areas.ForEach(i => p_TheAllMsg.AskFrame.areas.Add(i));
            askFrame.frames.ForEach(i => p_TheAllMsg.AskFrame.frames.Add(i));
        }
        else if (networkMsg.type == (int)CmdType.START)
        {
            var startGame = networkMsg as StartGame;

            p_TheAllMsg.StartGame      = new DS_protocol.p_StartGame();
            p_TheAllMsg.StartGame.test = 0;
        }
        else if (networkMsg.type == (int)CmdType.FRAME)
        {
            var frame = networkMsg as Frame;

            p_TheAllMsg.Frame         = new DS_protocol.p_Frame();
            p_TheAllMsg.Frame.buffers = SerializeFrame(frame);
            // p_TheAllMsg.Frame.syncFrame = new DS_protocol.p_SyncFrame();
            // p_TheAllMsg.Frame.area_id = frame.syncFrame.get_area_id();
            // p_TheAllMsg.Frame.syncFrame.frame_count = frame.syncFrame.get_frame_count();

            // Buffer_SyncFrame_msg_list(frame.syncFrame.get_msg(), p_TheAllMsg.Frame.syncFrame.msg_list);
        }
        else if (networkMsg.type == (int)CmdType.JOIN)
        {
            var join = networkMsg as Join;
            p_TheAllMsg.Join         = new DS_protocol.p_Join();
            p_TheAllMsg.Join.room_id = join.room_id;
        }

        return(Serialize <DS_protocol.p_AllMsg>(p_TheAllMsg));
    }
示例#25
0
    public void BeginSend(NetworkMsg msg)
    {
        if (ms == null || br == null)
        {
            ms = new MemoryStream();
            br = new BinaryWriter(ms);

            br.Write((int)(0));
        }

        if (ms != null && br != null)
        {
            byte[] data = Serialization.SerializeData(msg);
            if (data != null)
            {
                br.Write(data.Length);
                br.Write(data);
            }
        }
    }
示例#26
0
    public void SendGameData()
    {
        Queue <NetworkMsg> sendBuffer = robotGame.GetSendBuffer();
        int currentindx = 4;

        while (sendBuffer.Count > 0)
        {
            NetworkMsg msg = sendBuffer.Dequeue();

            var tbuffer = NetCommon.Encode(Serialization.Serialize(msg));
            Array.Copy(tbuffer, 0, BigRecivebuffer, currentindx, tbuffer.Length);
            currentindx += tbuffer.Length;
        }
        if (currentindx > 4)
        {
            System.Buffer.BlockCopy(BitConverter.GetBytes(currentindx - 4), 0, BigRecivebuffer, 0, 4);

            clientSocket.SendData(BigRecivebuffer, currentindx);
        }
    }
示例#27
0
    public static void MSG_FRIEND_STATUS(NetworkMsg msg)
    {
        Friend_notifyStatus res = new Friend_notifyStatus();

        using (MemoryStream stream = new MemoryStream(msg.data))
        {
            res = ProtoBuf.Serializer.Deserialize <Friend_notifyStatus>(stream);
        }

        for (int i = 0; i < Friend_cnt; i++)
        {
            if (Friend_list[i].name == res.m_Name)
            {
                Friend_list[i].status = res.online ? 1 : 0;
                break;
            }
        }

        Network.mySort();
        EventDispatcher.DispatchEvent("EventUpdateFriendList", null, null);
    }
示例#28
0
    public static void CMD_LOGIN(NetworkMsg msg)
    {
        Res_login xmsg = new Res_login();

        using (MemoryStream stream = new MemoryStream(msg.data))
        {
            xmsg = ProtoBuf.Serializer.Deserialize <Res_login>(stream);
        }
        Network.Myplayer.m_iPlayerUID = xmsg.m_nPlayerID;
        Network.playerid = xmsg.m_nPlayerID;

        if (xmsg.m_iHaveRole == false)
        {
            Network.gameState = Network.SGameState.CreateCharacter;
        }
        else
        {
            //Network.Instance.Send_EnterRoom();
            //Network.NetworkMode = true;
        }
    }
示例#29
0
    public static byte[] SerializeData(BaseProtocol baseProtocol, NetworkMsg networkMsg, ReplyGetRooms replyGetRooms = null, ReplyJoin replyJoin = null,
                                       ReplyAskFrame replyAskFrame = null, ReplyID replyID = null, ReplyStart replyStart = null)
    {
        p_AllMsg = new p_AllMsg();
        if (baseProtocol != null)
        {
            Buffer_BaseProtocol(baseProtocol);
        }
        if (networkMsg != null)
        {
            Buffer_NetworkMsg(networkMsg);
        }
        if (networkMsg.type == (int)CmdType.REPLYGETROOMS)
        {
            replyGetRooms = networkMsg as ReplyGetRooms;
            Buffer_ReplyGetRooms(replyGetRooms);
        }
        else if (networkMsg.type == (int)CmdType.REPLYJOIN)
        {
            replyJoin = networkMsg as ReplyJoin;
            Buffer_ReplyJoin(replyJoin);
        }
        else if (networkMsg.type == (int)CmdType.REPLYASKFRAME)
        {
            replyAskFrame = networkMsg as ReplyAskFrame;
            Buffer_ReplyAskFrame(replyAskFrame);
        }
        else if (networkMsg.type == (int)CmdType.REPLYSTART)
        {
            replyStart = networkMsg as ReplyStart;
            BufferReplyStart(replyStart);
        }
        else if (networkMsg.type == (int)CmdType.REPLYID)
        {
            replyID = networkMsg as ReplyID;
            Buffer_ReplyID(replyID);
        }

        return(Serialize <p_AllMsg>(p_AllMsg));
    }
示例#30
0
        //更新robot数组信息
        public void receive_robots_data()
        {
            List <Robot> robots = RobotSystem.get_singleton().get_robots();

            bool start_flag = false;

            foreach (Robot robot in robots)
            {
                if (robot == null)
                {
                    continue;               //断开连接时会使得robot = null
                }
                Queue <NetworkMsg> receiveQue = robot.m_clientSocket.load_receive_queue();
                while (receiveQue.Count > 0)
                {
                    NetworkMsg msg = receiveQue.Dequeue();
                    if (msg.MsgType == Type.StartGame)
                    {
                        Log.INFO("receivesd START msg from client {0}", robot.m_socketId);
                        start_flag = true;
                    }
                    else if (msg.MsgType == Type.RobotsData)
                    {
                        Log.INFO("receivesd ROBOT_DATA msg from client {0}", robot.m_socketId);

                        if (msg.RobotData.Count > 0)
                        {
                            robot.m_mapComponent.m_pos.X = msg.RobotData[0].Position.X;
                            robot.m_mapComponent.m_pos.Y = msg.RobotData[0].Position.Y;
                        }
                    }
                }
            }

            if (start_flag)
            {
                send_robots_data();//返回socketId到clients
                GameServer.s_isGameStart = true;
            }
        }
示例#31
0
 public static void Send(NetworkMsg msg)
 {
     ws.Send(JsonConvert.SerializeObject(msg));
 }