Beispiel #1
0
    //初始化
    void InitSocket()
    {
        currentjoin = new JoinPlayer();
        dpsend      = new DgramPlayer(transform);
        MyIP        = GetIPAddress();
        dpsend.IP   = MyIP;
        PlayerList  = new Dictionary <string, OtherPlayer>();

        //发送
        sock      = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //初始化一个Scoket实习,采用UDP传输
        clientEnd = new IPEndPoint(IPAddress.Broadcast, 9095);                                  //初始化一个发送广播和指定端口的网络端口实例
        sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);          //设置该scoket实例的发送形式



        //接受
        socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //初始化一个Scoket协议
        ipEnd  = new IPEndPoint(IPAddress.Any, 9095);                                        //初始化一个侦听局域网内部所有IP和指定端口
        ep     = (EndPoint)ipEnd;
        socket.Bind(ipEnd);                                                                  //绑定这个实例

        print("waiting for UDP dgram");

        //开启一个线程连接
        connectThread = new Thread(new ThreadStart(SocketReceive));
        connectThread.Start();
        InvokeRepeating("SocketSend", 0, 0.04f);
    }
        public IHttpActionResult PostJoinGame(JoinPlayer player)
        {
            String     result = "";
            JoinPlayer jp     = new JoinPlayer();

            jp.PlayerName = player.PlayerName;
            jp.GameCode   = player.GameCode;
            GameHub.JoinGame(jp);

            try
            {
                if (this.ModelState.IsValid)
                {
                    DataAccess access = new DataAccess();
                    access.JoinGame(player);

                    result = "You have successfully joint the game(" + player.GameCode + ")";
                }
            }
            catch (Exception e)
            {
                result = "Joining game has error";
            }

            return(CreatedAtRoute("DefaultApi", new { id = 1 }, result));
        }
Beispiel #3
0
    private void ProcessJoinPlayer(JoinPlayer packet)
    {
        lock (players)
            players.Add(packet.Player);

        if (onJoinPlayer != null)
        {
            AddTask(() => onJoinPlayer.Invoke(packet));
        }
    }
Beispiel #4
0
        public void OnJoinPlayer(JoinPlayer packet)
        {
            var inputPlayer = packet.Player;

            if (File.Exists("players\\" + packet.Player.PlayerId))
            {
                var json = File.ReadAllText("players\\" + packet.Player.PlayerId);
                packet.Player = JsonConvert.DeserializeObject <EzPlayer>(json);

                foreach (var pair in inputPlayer.Property)
                {
                    packet.Player.Property[pair.Key] = pair.Value;
                }
            }

            lock (Sessions)
            {
                EzPlayer rootPlayer = null;

                if (Sessions.Count > 0)
                {
                    Sessions.Broadcast(packet);
                    rootPlayer = Sessions.First().Player;
                }
                else
                {
                    rootPlayer = packet.Player;
                }

                lock (WorldProperty)
                {
                    SendPacket(new WorldInfo()
                    {
                        RootPlayerId = rootPlayer.PlayerId,

                        Player       = packet.Player,
                        OtherPlayers = Sessions.Select(x => x.Player).ToArray(),
                        Property     = WorldProperty
                    });
                }

                Sessions.Add(this);

                Console.Title = $"GSF.Ez,  {Sessions.Count} user(s) online";
            }

            Player = packet.Player;
        }
Beispiel #5
0
        private void SendJoinRoomListResponse(JoinRoomListResponseEvent e)
        {
            var msg = ResponseJoinRoomListMessage.Allocate();

            msg.HallRoomId = e.HallRoomId;
            msg.RetCode    = e.RetCode;
            foreach (var info in e.JoinRoomResponseInfoList)
            {
                var player = JoinPlayer.Allocate();
                player.RetCode = (int)info.ErrCode;
                player.Id      = info.PlayerId;
                player.Token   = info.Token;
                msg.Players.Add(player);
            }

            SendAndReleaseMessage(_serverChannel, RpcMessageType.ResponseJoinRoomList, msg);
        }