Exemple #1
0
        private SwissTournament GetTournament(int draftId)
        {
            if (TournamentManagers.TryAdd(draftId, new SwissTournament()))
            {
                var draft = _db.CubeDrafts
                            .Include("CubeDraftResults")
                            .Include("CubeDraftPlayers")
                            .Include("CubeDraftPlayers.MtgoLink")
                            .Single(d => d.Id == draftId);

                if (draft != null)
                {
                    foreach (var player in draft.CubeDraftPlayers.Where(p => p.Confirmed))
                    {
                        var playerObj = new Player();
                        playerObj.FromDB(player);

                        TournamentManagers[draftId].AddPlayer(playerObj);
                    }

                    foreach (var result in draft.CubeDraftResults)
                    {
                        var match = new TournMatch();
                        match.FromDB(result);

                        TournamentManagers[draftId].AddMatch(match);
                    }
                }
            }

            return(TournamentManagers[draftId]);
        }
        private void SplitMatch(int rowNumber)
        {
            TournMatch tournMatch = (TournMatch)((DataRowView)this.dgMatches.Rows[rowNumber].DataBoundItem)["MatchObject"];

            while (tournMatch.Players.Count > 0)
            {
                if (!tournMatch.Players[0].IsBye)
                {
                    this.listUnassignedPlayers.Items.Add((object)new ManualPairingObject(this.GetPlayer((object)tournMatch.Players[0])));
                }
                tournMatch.Players.RemoveAt(0);
            }
            bool flag = false;

            for (int index = 0; index < this.ddlOpenTables.Items.Count; ++index)
            {
                if (int.Parse(this.ddlOpenTables.Items[index].ToString()) > tournMatch.Table)
                {
                    this.ddlOpenTables.Items.Insert(index, (object)tournMatch.Table.ToString());
                    flag = true;
                    break;
                }
            }
            if (!flag)
            {
                this.ddlOpenTables.Items.Add((object)tournMatch.Table.ToString());
                this.ddlOpenTables.SelectedIndex = 0;
            }
            this.Matches.RemoveMatch((ITournMatch)tournMatch);
            this.dgMatches.Rows.RemoveAt(rowNumber);
        }
        private void CreateMatch(ITournPlayer player1, ITournPlayer player2, ITournPlayer winner)
        {
            int table = int.Parse(this.ddlOpenTables.Text);

            if (this.Matches.GetByRoundTable(this.Round, table) == null)
            {
                TournMatch tournMatch = new TournMatch();
                tournMatch.Table = table;
                tournMatch.Round = this.Round;
                tournMatch.Players.AddPlayer(player1);
                tournMatch.Players.AddPlayer(player2);
                if (winner != null)
                {
                    tournMatch.Winner = winner.ID;
                    tournMatch.Status = TournMatchResult.Winner;
                }
                tournMatch.Players.SortByIDByesLast();
                this.Matches.AddMatch((ITournMatch)tournMatch);
                this.NewMatches.AddMatch((ITournMatch)tournMatch);
                this.Matches.SortByRoundTable();
                this.BindMatches();
                this.RemovePlayerFromUnassigned(tournMatch.Players[0].ID);
                this.RemovePlayerFromUnassigned(tournMatch.Players[1].ID);
                this.ddlOpenTables.Items.Remove((object)table.ToString());
                if (this.ddlOpenTables.Items.Count <= 0)
                {
                    return;
                }
                this.ddlOpenTables.SelectedIndex = 0;
            }
            else
            {
                int num = (int)MessageBox.Show("Error assigning match to the table");
            }
        }
Exemple #4
0
        private void NextPair()
        {
            var player = _tempPlayers.Shuffle().OrderByDescending(p => p.Wins).First();

            var previousOpponents = Matches.Where(p => p.Player1 == player || p.Player2 == player)
                                    .Select(p => p.Player1 == player ? p.Player2 : p.Player1);

            //Find the best player
            //can't add ThenBy points as it can create infinte loops
            var match = _tempPlayers.OrderByDescending(p => p.Wins).ThenBy(p => Guid.NewGuid()).ToList().FirstOrDefault(p => !previousOpponents.Contains(player) && p != player);



            if (match == null)
            {
                throw new InvalidOperationException("Unable to find match for player:" + player.PlayerName + "tempPlayers: " + _tempPlayers.Count + " " + _tempPlayers[0].PlayerName + " " + _tempPlayers[1].PlayerName);
            }

            TournMatch thispair = new TournMatch(player, match, _nextRound);

            if (!previousOpponents.Contains(match))
            {
                _pairings.Add(thispair);
                _tempPlayers.Remove(player);
                _tempPlayers.Remove(match);
            }
            else
            {
                Console.WriteLine("Caught a Re-pair: {0}", thispair.ToString());

                /*if (cycle >= 10)
                 * {
                 *  Thread.Sleep(5000);
                 * }*/
                int samepoints = player.Wins;
                var playertier =
                    _pairings.Where(
                        tierpair => (tierpair.Player1.Wins == samepoints || tierpair.Player2.Wins == samepoints)).ToArray();

                foreach (TournMatch thistierpair in playertier)
                {
                    _pairings.Remove(thistierpair);
                    _tempPlayers.Add(thistierpair.Player1);
                    _tempPlayers.Add(thistierpair.Player2);
                }

                var equals = _tempPlayers.Where(equalplayer => equalplayer.Wins == player.Wins).ToArray();
                if (equals.Length == 2)
                {
                    Console.WriteLine("Pair Down");
                    _tempPlayers.Remove(player);
                    NextPair();
                    _tempPlayers.Add(player);
                }
            }
            return;
        }
Exemple #5
0
 private void ddlDroppedPlayers_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (this.CurrentTournament == null)
     {
         int num = (int)MessageBox.Show("Error reading tournament info");
         this.DialogResult = DialogResult.Cancel;
         this.Close();
     }
     if (this.ddlDroppedPlayers.SelectedIndex < 0)
     {
         int num1 = (int)MessageBox.Show("Invalid Player");
     }
     else
     {
         this.currentPlayer = (ITournPlayer)this.ddlDroppedPlayers.SelectedItem;
         this.listCurrentPairings.Items.Clear();
         this.listNewPairings.Items.Clear();
         int round = this.CurrentTournament.CurrentRound - 1;
         ITournMatchArray byRound = this.CurrentTournament.Matches.GetByPlayer(this.currentPlayer.ID).GetByRound(round);
         if (byRound.Count == 0)
         {
             int num2 = (int)MessageBox.Show("Player was not in previous round");
         }
         else
         {
             if (byRound[0].Players[0].ID == byRound[0].Winner)
             {
                 this.chkPrevRoundP1Drop.Text = byRound[0].Players[0].FullNameWithId + " (Winner)";
                 this.chkPrevRoundP2Drop.Text = byRound[0].Players[1].FullNameWithId;
             }
             else if (byRound[0].Players[1].ID == byRound[0].Winner)
             {
                 this.chkPrevRoundP1Drop.Text = byRound[0].Players[0].FullNameWithId;
                 this.chkPrevRoundP2Drop.Text = byRound[0].Players[1].FullNameWithId + " (Winner)";
             }
             else
             {
                 this.chkPrevRoundP1Drop.Text = string.Format("{0} ({1})", (object)byRound[0].Players[0].FullNameWithId, (object)byRound[0].StatusText);
                 this.chkPrevRoundP2Drop.Text = byRound[0].Players[1].FullNameWithId;
             }
             this.chkPrevRoundP1Drop.Checked = byRound[0].Players[0].DropRound == round;
             this.chkPrevRoundP2Drop.Checked = byRound[0].Players[1].DropRound == round;
             this.radioREOSwapDrops.Enabled  = byRound[0].Players[0].IsActive ^ byRound[0].Players[1].IsActive;
             this.CurrentMatches             = this.CurrentTournament.Matches.GetPairedDown(this.CurrentTournament.CurrentRound);
             foreach (ITournMatch currentMatch in (IEnumerable <ITournMatch>) this.CurrentMatches)
             {
                 if (currentMatch.Players.HasPlayer(Player.BYE_ID) && currentMatch.Winner != Player.BYE_ID)
                 {
                     this.playerVsBye = currentMatch;
                     this.radioREOVsCurrentPlayerWithBye.Enabled = true;
                     using (IEnumerator <ITournPlayer> enumerator = currentMatch.Players.GetEnumerator())
                     {
                         while (enumerator.MoveNext())
                         {
                             ITournPlayer current = enumerator.Current;
                             if (!current.IsBye)
                             {
                                 this.radioREOVsCurrentPlayerWithBye.Text = string.Format("Pair vs. Bye Player: {0} ({1} pts)", (object)current.FullNameWithId, (object)current.Points);
                             }
                         }
                         break;
                     }
                 }
             }
             this.radioREOByeLoss.Enabled    = true;
             this.radioREOByeWin.Enabled     = true;
             this.radioREORePairings.Enabled = true;
             byRound.SortByPoints();
             for (int index = this.CurrentMatches.Count - 1; index >= 0; --index)
             {
                 if (this.CurrentMatches[index].Points > this.currentPlayer.Tie1_Wins)
                 {
                     this.CurrentMatches.RemoveAt(index);
                 }
             }
             Random random = new Random();
             for (int pointCount = 0; pointCount <= this.currentPlayer.Tie1_Wins; ++pointCount)
             {
                 if (this.CurrentMatches.GetByPoints(this.CurrentTournament.CurrentRound, pointCount).Count == 0)
                 {
                     ITournMatchArray byPoints = this.CurrentTournament.Matches.GetByPoints(this.CurrentTournament.CurrentRound, pointCount);
                     if (byPoints.Count > 0)
                     {
                         this.CurrentMatches.AddMatch(byPoints[random.Next(byPoints.Count - 1)]);
                     }
                 }
             }
             this.CurrentMatches.SortByPoints();
             foreach (ITournMatch currentMatch in (IEnumerable <ITournMatch>) this.CurrentMatches)
             {
                 this.listCurrentPairings.Items.Add((object)string.Format("#{0}: {1} ({2} pts) vs {3} ({4} pts)", (object)(currentMatch.Table + this.CurrentTournament.TableOffset), (object)currentMatch.Players[0].FullNameWithId, (object)currentMatch.Players[0].Tie1_Wins, (object)currentMatch.Players[1].FullNameWithId, (object)currentMatch.Players[1].Tie1_Wins));
             }
             this.PendingMatches.Clear();
             ITournPlayer player1 = this.currentPlayer;
             foreach (ITournMatch currentMatch in (IEnumerable <ITournMatch>) this.CurrentMatches)
             {
                 TournMatch tournMatch = new TournMatch(currentMatch);
                 this.PendingMatches.AddMatch((ITournMatch)tournMatch);
                 ITournPlayer currentPlayer = this.currentPlayer;
                 ITournPlayer player2       = !tournMatch.Players[0].IsBye ? (!tournMatch.Players[1].IsBye ? (tournMatch.Players[0].Tie1_Wins <= tournMatch.Players[1].Tie1_Wins ? (tournMatch.Players[0].Tie1_Wins >= tournMatch.Players[1].Tie1_Wins ? tournMatch.Players[random.Next(tournMatch.Players.Count - 1)] : tournMatch.Players[0]) : tournMatch.Players[1]) : tournMatch.Players[1]) : tournMatch.Players[0];
                 tournMatch.Players.RemovePlayer(player2);
                 tournMatch.Players.AddPlayer(player1);
                 tournMatch.Winner = Player.BYE_ID;
                 tournMatch.Status = TournMatchResult.Incomplete;
                 player1           = player2;
             }
             if (!player1.IsBye)
             {
                 ITournMatch blankMatch = this.CreateBlankMatch();
                 blankMatch.Players.AddPlayer(player1);
                 blankMatch.Players.AddPlayer((ITournPlayer) new TournPlayer((IPlayer)Player.ByePlayer));
                 blankMatch.Winner = player1.ID;
                 blankMatch.Status = TournMatchResult.Winner;
                 this.PendingMatches.AddMatch(blankMatch);
             }
             foreach (ITournMatch pendingMatch in (List <ITournMatch>) this.PendingMatches)
             {
                 this.listNewPairings.Items.Add((object)string.Format("#{0}: {1} ({2} pts) vs {3} ({4} pts)", (object)(pendingMatch.Table + this.CurrentTournament.TableOffset), (object)pendingMatch.Players[0].FullNameWithId, (object)pendingMatch.Players[0].Tie1_Wins, (object)pendingMatch.Players[1].FullNameWithId, (object)pendingMatch.Players[1].Tie1_Wins));
             }
             this.chkPrintNewResultSlips.Enabled = true;
         }
     }
 }
Exemple #6
0
 private void btnApplyChanges_Click(object sender, EventArgs e)
 {
     this.currentPlayer.DropRound  = 0;
     this.currentPlayer.DropReason = CutType.Active;
     if (this.radioREOByeLoss.Checked)
     {
         ITournMatch blankMatch = this.CreateBlankMatch();
         blankMatch.Players.AddPlayer(this.currentPlayer);
         blankMatch.Players.AddPlayer((ITournPlayer) new TournPlayer((IPlayer)Player.ByePlayer));
         blankMatch.Winner = Player.BYE_ID;
         blankMatch.Status = TournMatchResult.Winner;
         this.PendingMatches.Clear();
         this.NewMatches.AddMatch(blankMatch);
     }
     else if (this.radioREOByeWin.Checked)
     {
         ITournMatch blankMatch = this.CreateBlankMatch();
         blankMatch.Players.AddPlayer(this.currentPlayer);
         blankMatch.Players.AddPlayer((ITournPlayer) new TournPlayer((IPlayer)Player.ByePlayer));
         blankMatch.Winner = this.currentPlayer.ID;
         blankMatch.Status = TournMatchResult.Winner;
         this.PendingMatches.Clear();
         this.NewMatches.AddMatch(blankMatch);
     }
     else if (this.radioREORePairings.Checked)
     {
         this.NewMatches.Append((ITournMatchArray)this.PendingMatches);
         this.PendingMatches.Clear();
     }
     else if (this.radioREOSwapDrops.Checked)
     {
         int round = this.CurrentTournament.CurrentRound - 1;
         ITournMatchArray byPlayer1 = this.CurrentTournament.Matches.GetByPlayer(this.currentPlayer.ID);
         if (byPlayer1.Count == 0)
         {
             int num = (int)MessageBox.Show("Error");
             return;
         }
         ITournMatchArray byRound1 = byPlayer1.GetByRound(round);
         if (byRound1.Count > 1)
         {
             int num = (int)MessageBox.Show("Error");
             return;
         }
         ITournPlayer byId = this.CurrentTournament.Players.FindById(byRound1[0].GetOpponentId(this.currentPlayer.ID));
         byId.DropRound  = round;
         byId.DropReason = CutType.Drop;
         ITournMatchArray byPlayer2 = this.CurrentTournament.Matches.GetByPlayer(byId.ID);
         if (byPlayer2.Count == 0)
         {
             int num = (int)MessageBox.Show("Error");
             return;
         }
         ITournMatchArray byRound2 = byPlayer2.GetByRound(this.CurrentTournament.CurrentRound);
         if (byRound2.Count > 1)
         {
             int num = (int)MessageBox.Show("Error");
             return;
         }
         TournMatch tournMatch = new TournMatch(byRound2[0]);
         tournMatch.Players.RemovePlayer(byId);
         tournMatch.Players.AddPlayer(this.currentPlayer);
         tournMatch.Winner = Player.BYE_ID;
         tournMatch.Status = TournMatchResult.Incomplete;
         this.PendingMatches.Clear();
         this.NewMatches.AddMatch((ITournMatch)tournMatch);
     }
     else if (this.radioREOVsCurrentPlayerWithBye.Checked)
     {
         this.playerVsBye.Players.SortByIDByesLast();
         this.playerVsBye.Players.RemoveAt(this.playerVsBye.Players.Count - 1);
         this.playerVsBye.Players.AddPlayer(this.currentPlayer);
         this.playerVsBye.Winner = Player.BYE_ID;
         this.playerVsBye.Status = TournMatchResult.Incomplete;
         this.PendingMatches.Clear();
         this.NewMatches.AddMatch(this.playerVsBye);
     }
     this.DialogResult = DialogResult.OK;
 }
Exemple #7
0
 public void AddMatch(TournMatch match)
 {
     Matches.AddMatch(match);
     CurrentRound = Matches.Count == 0 ? 0 : Matches.Max(m => m.Round);
 }