Пример #1
0
        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);
            }
        }
Пример #2
0
        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}");
                }
            }
        }
Пример #3
0
 public void AddPlayer(int id, PlayerServer playerServer)
 {
     PlayerServers.TryAdd(id, playerServer);
 }