private void BroadcastRemovePlayer(int id, PlayerServer server) { var isLeave = true; var isBot = true; server.KickPlayerThisPlayerServer(); RemovePlayer(id); foreach (var player in PlayerServers.Values) { player.ReportPlayerDisconnected(id, isLeave, isBot); } }
private void GettingPlayers() { try { tcpListenerPlayers = new TcpListener(IPAddress.Any, Port); tcpListenerPlayers.Start(); while (true) { var tcpClient = tcpListenerPlayers.AcceptTcpClient(); if (!IsHostVisible || PlayerServers.Count >= MaxPlayers) { tcpClient.Close(); continue; } var isHost = playersID.Count == MaxPlayers; var playerID = playersID.Dequeue(); var playerServer = new PlayerServer(this, tcpClient, playerID, isHost); Task.Run(playerServer.HandlingMessagesPlayer); if (isHost) { Host = PlayerServers[playerID]; } } } catch (Exception ex) { DisconnectPlayers(); if (!(ex is InvalidOperationException || ex is SocketException)) { MessageBox.Show($"Exception in MainPlayerServer!\nTargetSite:{ex.TargetSite}\n {ex.Message}\n StackTrace:{ex.StackTrace}"); } } }
public void AddPlayer(int id, PlayerServer playerServer) { PlayerServers.TryAdd(id, playerServer); }