public HeadlessServerClient(TcpClient _tcpClient) { tcpClient = _tcpClient; HeadlessServerActor actor = SpawnActor(); networkStream = tcpClient.GetStream(); tcpClient.NoDelay = true; ClientConnected(actor.PlayerID, actor.CurrentPos); HeadlessServer.Clients.Add(this); HeadlessServer.Players.Add(actor); }
/// <summary> /// Instantiates a player actor in the scene /// </summary> HeadlessServerActor SpawnActor() { HeadlessServerActor actor = new HeadlessServerActor(); actor.Endpoint = tcpClient.Client.RemoteEndPoint; this.OnNewInputsRecieved += actor.NewInputsRecieved; actor.Client = this; HeadlessServer.PlayersConnected++; actor.PlayerID = HeadlessServer.PlayersConnected; return(actor); }
public static void Disconnect(HeadlessServerClient disconnectedClient) { HeadlessServerActor disconnectedActor = null; foreach (HeadlessServerActor actor in Players) { if (actor.Client == disconnectedClient) { disconnectedActor = actor; SendDisconnectNotification(disconnectedActor.PlayerID); } } if (disconnectedActor != null) { Players.Remove(disconnectedActor); Clients.Remove(disconnectedClient); } }