Esempio n. 1
0
 public void AddRoundToPairingCount(PlayerPairings pairings)
 {
     foreach (var team in Teams)
     {
         team.AddToPairingsCount(pairings);
     }
 }
Esempio n. 2
0
        internal void AddPlayer(Player player, PlayerPairings pairings)
        {
            var team = Teams.First(t => t.PlayerCount == Teams.Min(tt => tt.PlayerCount));

            team.AddPlayerLate(player, pairings);
            SaveToFile();
        }
Esempio n. 3
0
 /// <summary>
 /// For each pair of players, record that they played together
 /// </summary>
 public void AddToPairingsCount(PlayerPairings pairings)
 {
     foreach (var playerPairing in PlayerPairings())
     {
         pairings.PlayedTogether(playerPairing);
     }
 }
Esempio n. 4
0
 internal void Delete(PlayerPairings pairings)
 {
     File.Delete(_filename);
     foreach (var team in Teams)
     {
         team.OnDelete(pairings);
     }
 }
Esempio n. 5
0
        /// <summary>
        /// Permanently delete a player from the team
        /// </summary>
        internal void RemovePlayer(Player player, PlayerPairings pairings)
        {
            Players.Remove(player);

            // Undo the players' pairings
            foreach (var playerPairing in PlayerPairings(player))
            {
                pairings.UndoPlayerPairing(playerPairing);
            }
        }
Esempio n. 6
0
        /// <summary>
        /// Add a player to the team after pairings have already been generated
        /// </summary>
        public void AddPlayerLate(Player player, PlayerPairings pairings)
        {
            AddPlayer(player);

            foreach (var pairing in PlayerPairings(player))
            {
                pairings.PlayedTogether(pairing);
            }
            player.GameDone(GameResult, Model.GameResult.NoneYet);
        }
Esempio n. 7
0
 internal void DeletePlayer(Player player, PlayerPairings pairings)
 {
     foreach (var team in Teams)
     {
         if (team.Players.Contains(player))
         {
             team.RemovePlayer(player, pairings);
         }
     }
     SaveToFile();
 }
Esempio n. 8
0
        public void OnDelete(PlayerPairings pairings)
        {
            // Undo the players' scores
            UpdateGameScore(Model.GameResult.NoneYet);

            // Undo the players' pairings
            foreach (var playerPairing in PlayerPairings())
            {
                pairings.UndoPlayerPairing(playerPairing);
            }
        }
Esempio n. 9
0
        public Tournament(TournamentPersistence storageLocator)
        {
            _storage = storageLocator;
            LoadSettings();

            var provider = new PlayerListFile(_storage, Settings);

            PlayerProvider          = provider;
            PlayerPairings          = new PlayerPairings();
            provider.PlayerDeleted += PlayerDeleted;
            Rounds = new ObservableCollection <HatRound>();
        }
Esempio n. 10
0
        public void LoadExistingData()
        {
            Rounds.Clear();
            PlayerPairings.Clear();

            var files = _storage.GetHatRoundPaths();

            foreach (var file in files)
            {
                try
                {
                    var doc = new XmlDocument();
                    using (var stream = new FileStream(file, FileMode.Open))
                    {
                        doc.Load(stream);
                    }
                    var teams = doc.SelectNodes("/HatRound/Teams/Team");

                    // Basic validation
                    if (teams.Count == 0 || teams.Count % 2 != 0)
                    {
                        throw new Exception();
                    }

                    var teamList = new List <Team>();
                    foreach (XmlNode team in teams)
                    {
                        var  teamName = team.SelectSingleNode("Name").InnerText;
                        Team t        = new Team(teamName);
                        var  players  = team.SelectNodes("Players/Player");

                        // Basic validation
                        if (players.Count == 0)
                        {
                            throw new Exception();
                        }

                        foreach (XmlNode player in players)
                        {
                            var    name = player.SelectSingleNode("Name").InnerText;
                            Player p    = PlayerProvider.GetPlayer(name);

                            // Player list may have changed throughout the day, so accept this difference
                            if (p != null)
                            {
                                t.AddPlayer(p);
                            }
                        }
                        GameResult gameResult = (GameResult)Enum.Parse(typeof(GameResult), team.SelectSingleNode("GameResult").InnerText);
                        if (gameResult != GameResult.NoneYet)
                        {
                            t.GameDone(gameResult);
                        }

                        teamList.Add(t);
                    }
                    var round = new HatRound(teamList, file);
                    AddRound(round);
                }
                catch (Exception)
                {
                    throw new InvalidRoundException(string.Format("Round file {0} is an invalid file", file));
                }
            }
        }