Beispiel #1
0
 public void OnPacket(Remote r)
 {
     var type = (PacketType)Parent.Connection.Buffer.ReadByte();
     switch (type)
     {
         case PacketType.NewConnection:
             //TODO
             return;
         case PacketType.ClientReady:
             ConnectionSelectForm.Log("Ready " + r.ToString());
             _Ready[RemoteIndex(r)] = true;
             CheckReady();
             return;
         case PacketType.ClientStatus:
             //ignore
             return;
         case PacketType.ClientInputData:
             //
             Parent.Connection.Buffer.ReadBytes(_ByteBuffer);
             Parent._InputHandler.ReceiveNetworkData(RemoteIndex(r), _ByteBuffer);
             return;
         default:
             break;
     }
 }
Beispiel #2
0
            public void OnPacket(Remote r)
            {
                var type = (PacketType)_Parent.Connection.Buffer.ReadByte();
                switch (type)
                {
                    case PacketType.None:
                        //empty packet
                        r.ReceiveCount -= 1;
                        _Parent.Connection.Buffer.Write(PacketType.None);
                        _Parent.Connection.Send(r);
                        return;
                    case PacketType.NewConnection:
                        if (r.ReceiveCount == 1)
                        {
                            ClientInfo ci = new ClientInfo();
                            ci.Remote = r;
                            r.Data = ci;
                            _Parent._Clients.Add(ci);

                            //just reply
                            SendStatus(r);

                            ConnectionSelectForm.Log("New client " + r.ToString());
                            ConnectionSelectForm.Log("[A] Client " + _Parent._Clients.Count);
                            return;
                        }
                        break;
                    case PacketType.ClientStatus:
                        if (r.ReceiveCount != 1)
                        {
                            //TODO check if active client
                            //we don't need any information, just reply
                            SendStatus(r);

                            ConnectionSelectForm.Log("Client status " + r.ToString());
                            return;
                        }
                        break;
                    default:
                        break;
                }
                ConnectionSelectForm.Log("Error");
                _Parent.RemoveClient(r);
            }