예제 #1
0
        public static void ChangeGameTurn(Client IsPlaying)
        {
            int IndexOpponent = ClientManager.byPseudo(IsPlaying.info_game.opponent);
            int IndexClient   = ClientManager.byPseudo(IsPlaying.info_main.pseudo);

            if (IndexClient == -1 || IndexOpponent == -1)
            {
                return;
            }

            ClientManager.ListClient[IndexClient].info_game.timeTourCount   = Environment.TickCount;
            ClientManager.ListClient[IndexOpponent].info_game.timeTourCount = Environment.TickCount;

            ClientManager.ListClient[IndexClient].info_game.timeExist   = 0;
            ClientManager.ListClient[IndexOpponent].info_game.timeExist = 0;

            if (IsPlaying.info_game.tour)
            {
                ClientManager.ListClient[IndexClient].info_game.tour   = !ClientManager.ListClient[IndexClient].info_game.tour;
                ClientManager.ListClient[IndexOpponent].info_game.tour = !ClientManager.ListClient[IndexOpponent].info_game.tour;
            }

            if (!EndGame.canMakeAnAction(WhosNext(IsPlaying)))
            {
                ClientManager.ListClient[IndexClient].SendMsg("Partie terminée");
                ClientManager.ListClient[IndexOpponent].SendMsg("Partie terminée");
                ClientManager.RedirectEnding(WhosNext(IsPlaying), false);
            }
        }
예제 #2
0
        public static bool OpponentIsDead(Client isPlaying)
        {
            int IndexClient   = ClientManager.byPseudo(isPlaying.info_main.pseudo);
            int IndexOpponent = ClientManager.byPseudo(isPlaying.info_game.opponent);

            if (IndexClient == -1 || IndexOpponent == -1)
            {
                return(false);
            }

            if (isPlaying.info_game.pawnAlive <= 0)
            {
                ClientManager.RedirectEnding(isPlaying, false);
                return(true);
            }
            return(false);
        }
예제 #3
0
        public void Deconnexion()
        {
            ClientManager.RedirectEnding(this, true);

            bool EnAttente = MatchMaking.DejaInscrit(this);

            if (EnAttente)
            {
                MatchMaking.SupprimerListeAttente(this.info_main.pseudo);
            }

            ClientManager.threadLock.WaitOne();

            ClientManager.ListClient.RemoveAt(ClientManager.bySocket(MySocket));

            ClientManager.threadLock.ReleaseMutex();

            Console.WriteLine("Le client " + info_main.pseudo + " vient de se deconnecter");

            InitialisationConnexion(false);

            if (MySocket != null)
            {
                MySocket.Close();
            }

            if (MyThread != null)
            {
                if (MyThread.IsAlive)
                {
                    MyThread.Abort();
                }
            }

            if (MySendThread != null)
            {
                if (MySendThread.IsAlive)
                {
                    MySendThread.Abort();
                }
            }
        }