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; } }
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); }