예제 #1
0
        private void CheckingRoundConditions()
        {
            if (!isRoundChecked)
            {
                //===================================test for GAME TYPE 0==============
                if (GameType == 0)
                {
                    //...
                }
                //==================================test for GAME TYPE 0==============

                //===================================test for GAME TYPE 1==============
                if (GameType == 1)
                {
                    int        HowManyDead          = 0;
                    List <int> _which_teamID_winner = new List <int>();
                    foreach (Players CurrentPlayer in LocalPlayersPool.Values)
                    {
                        if (CurrentPlayer.isDead)
                        {
                            HowManyDead++;
                        }
                        else
                        {
                            _which_teamID_winner.Add(CurrentPlayer.team_id);
                        }
                    }

                    if (HowManyDead > 0)
                    {
                        Dictionary <Players, int> CheckingResult = new Dictionary <Players, int>();
                        foreach (Players CurrentPlayer in LocalPlayersPool.Values)
                        {
                            if (_which_teamID_winner.Contains(CurrentPlayer.team_id))
                            {
                                CurrentPlayer.AddPVPScoreByTeamID(CurrentPlayer.team_id);
                            }

                            CheckingResult.Add(CurrentPlayer, CurrentPlayer.PlayerScoreInPvP);
                        }

                        Round++;
                        bool isGameOver = false;

                        foreach (var keys in CheckingResult.Keys)
                        {
                            if (CheckingResult[keys] == 2)
                            {
                                isGameOver = true;
                                break;
                            }
                        }

                        isRoundChecked = true;
                        ManagePVPEndGame(10, isGameOver);
                    }
                }
                //==================================test for GAME TYPE 1==============

                //===================================test for GAME TYPE 2==============
                if (GameType == 2)
                {
                    int                   HowManyDead          = 0;
                    List <int>            _which_teamID_winner = new List <int>();
                    Dictionary <int, int> TeamOfDead           = new Dictionary <int, int>();
                    bool                  isRoundOver          = false;
                    foreach (Players CurrentPlayer in LocalPlayersPool.Values)
                    {
                        if (CurrentPlayer.isDead)
                        {
                            HowManyDead++;
                            if (!TeamOfDead.ContainsKey(CurrentPlayer.team_id))
                            {
                                TeamOfDead.Add(CurrentPlayer.team_id, 1);
                            }
                            else
                            {
                                TeamOfDead[CurrentPlayer.team_id] += 1;
                            }

                            if (TeamOfDead[CurrentPlayer.team_id] == 2)
                            {
                                isRoundOver = true;
                            }
                        }
                        else
                        {
                            _which_teamID_winner.Add(CurrentPlayer.team_id);
                        }
                    }

                    if (isRoundOver)
                    {
                        Dictionary <Players, int> CheckingResult = new Dictionary <Players, int>();
                        foreach (Players CurrentPlayer in LocalPlayersPool.Values)
                        {
                            if (_which_teamID_winner.Contains(CurrentPlayer.team_id))
                            {
                                CurrentPlayer.AddPVPScoreByTeamID(CurrentPlayer.team_id);
                            }

                            CheckingResult.Add(CurrentPlayer, CurrentPlayer.PlayerScoreInPvP);
                        }

                        Round++;
                        bool isGameOver = false;

                        foreach (var keys in CheckingResult.Keys)
                        {
                            if (CheckingResult[keys] == 2)
                            {
                                isGameOver = true;
                                break;
                            }
                        }

                        isRoundChecked = true;
                        ManagePVPEndGame(10, isGameOver);
                    }
                }
                //==================================test for GAME TYPE 2==============

                //===================================test for GAME TYPE 3==============
                if (GameType == 3)
                {
                    int     HowManyDead = 0;
                    Players winner      = null;

                    foreach (Players CurrentPlayer in LocalPlayersPool.Values)
                    {
                        if (CurrentPlayer.isDead)
                        {
                            HowManyDead++;
                        }
                        else
                        {
                            winner = CurrentPlayer;
                        }
                    }

                    if (HowManyDead == 7)
                    {
                        Console.WriteLine("GAME OVER 7 dead !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                        isRoundChecked = true;
                        ManagePVPEndGame(10, true);
                    }
                }
                //==================================test for GAME TYPE 3==============
            }
        }