public static void ClientDisconnectedEventHandler(UdpClient client)
    {
        NetWerewolfPlayer player = client.GetPlayer();

        player.Status = PlayerStatus.Dead;
        ServerInstance.Send(2, player.PlayerID); // RemoteClientDisconnected(uint)
        ServerInstance.Send(5, 0u, $"{player.Name} has fallen...");

        try
        {
            ConnectedPlayers.Remove(player);
            GameInfo.Players.Remove(player);
        }
        catch { }

        try
        {
            NetWerewolfPlayer nextHost = ConnectedPlayers.First();
            if (nextHost != null && !nextHost.IsHost)
            {
                nextHost.IsHost = true;
                nextHost.PlayerClient.Send(199, true);
                ServerInstance.Send(5, 0, $"{nextHost.Name} is now the game master.");
            }
        }
        catch { } // No players left to be host
    }
Exemple #2
0
        private void OnPlayerFinished(string nick)
        {
            if (ConnectedPlayers.Select(item => item.Nick).Contains(nick))
            {
                ConnectedPlayers.First(item => item.Nick == nick).IsPlaying = false;
            }

            AvailablePlayers.Add(nick);
        }
Exemple #3
0
        private void OnUserDisconnect(string nick)
        {
            var helpPlayer = ConnectedPlayers.First(player => player.Nick == nick);

            ConnectedPlayers.Remove(helpPlayer);

            AvailablePlayers.Remove(nick);

            if (ChatTabs.Count == 0)
            {
                return;
            }
            var chatTab = ChatTabs.First(item => item.Header == nick);

            if (chatTab != null)
            {
                ChatTabs.Remove(chatTab);
            }
        }
Exemple #4
0
        private void OnPlayerStarted(string nick)
        {
            ConnectedPlayers.First(player => player.Nick == nick).IsPlaying = true;

            AvailablePlayers.Remove(nick);
        }