Beispiel #1
0
        public void exitTable(PlayerObserver player)
        {
            lock (joinLock)
            {
                if (m_players.ContainsKey(player.ThisPlayer.PlayerID))
                {
                    int playerScore = m_players[player.ThisPlayer.PlayerID].Score;
                    m_players.Remove(player.ThisPlayer.PlayerID);
                    player.PlayerTableChatSendEvent -= player_PlayerTableChatSendEvent;
                    player.PlayerUpdateTableCellEvent -= player_PlayerUpdateTableCellEvent;

                    if (m_gameStarted && m_tableNumPlayer > 1)
                    {
                        player.updatePlayerScore(playerScore);

                        //Si joueur unique, quitter la table (assuré par le manager)

                        if (m_players.Count == 1)
                        {
                            //Si 2 joueurs, declarer l'autre comme gagnant
                            m_gameEnded = true;

                            //Enregistrer les nouveaux scores
                            foreach (var item in m_players) // Normalement il y a un seul joueur
                            {
                                sendToAllTablePlayer(new PDGameFinish(TableID, item.Value.Player.ThisPlayer.PlayerID));
                                item.Value.Player.updatePlayerScore(item.Value.Score);
                                break;
                            }
                        }
                    }
                }
            }
        }