private void ProcessSet(TennisSet set)
        {
            int Server     = 1;
            int Returner   = 2;
            int PointCount = 0;

            foreach (TennisGame game in set.Games)
            {
                Server     = game.Server;
                Returner   = 3 - Server;
                PointCount = 1;

                if (game.GetType() != typeof(TennisTiebreak))
                {
                    //Tiebreaks do not count for service games won or lost
                    if (game.Winner != 0)
                    {
                        IncrementItem(Statistics.ServiceGamesPlayed, Server);
                        IncrementItem(Statistics.ReturnGamesPlayed, Returner);

                        if (game.Winner == game.Server)
                        {
                            IncrementItem(Statistics.ServiceGamesWon, Server);
                        }
                        else
                        {
                            IncrementItem(Statistics.ReturnGamesWon, Returner);
                        }
                    }
                }

                foreach (TennisPoint point in game.Points)
                {
                    if (game.GetType() != typeof(TennisTiebreak))
                    {
                        ProcessPoint(point, point.Server, 3 - point.Server, 1);
                    }
                    else
                    {
                        TennisTiebreak tiebreak = (TennisTiebreak)game;
                        Server = tiebreak.GetStartServer();
                        if (((PointCount / 2) % 2) == 1)
                        {
                            Server = 3 - Server;
                        }
                        Returner = 3 - Server;

                        ProcessPoint(point, Server, Returner, 1);

                        PointCount++;
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Returns the instance of the current game
        /// </summary>
        /// <returns></returns>
        public TennisGame currentGame()
        {
            TennisSet currentSet = this.currentSet();

            if (currentSet == null)
            {
                return(null);
            }

            return(currentSet.currentGame());
        }
Exemple #3
0
        /// <summary>
        /// Stop the this match
        /// </summary>
        public void End(MatchStatus newStatus)
        {
            Status = newStatus;
            Duration.End();

            TennisSet _set = currentSet();

            if (_set != null)
            {
                _set.End(Winner);
            }
        }
Exemple #4
0
        public int GetLocalPlayer()
        {
            if (m_LocalPlayer == 0)
            {
                TennisGame  Game  = this.PartOf;
                TennisSet   Set   = Game.PartOf;
                TennisMatch Match = Set.PartOf;

                m_LocalPlayer = 1;
                //if (Match.Contestant1.ContainsLocalPlayer) m_LocalPlayer = 1;
                if (Match.Contestant2.ContainsLocalPlayer)
                {
                    m_LocalPlayer = 2;
                }
            }

            return(m_LocalPlayer);
        }
Exemple #5
0
        /// <summary>
        /// Start a new set and a new game.
        /// </summary>
        public void StartNewSet()
        {
            if (!Duration.SessionInProgress)
            {
                Start();                              // Start this match
            }
            TennisSet newSet = new TennisSet(this);

            newSet.Start();
            Sets.Add(newSet);

            if (NewSet != null)
            {
                NewSet.Invoke(this, newSet);
            }

            StartNewGame();
        }
 public TennisStatistics(TennisSet owner)
 {
     Items        = new List <TennisStatistic>();
     currentMatch = owner.currentMatch();
     currentSet   = owner;
 }
 public TennisStatistics(TennisMatch owner)
 {
     Items        = new List <TennisStatistic>();
     currentMatch = owner;
     currentSet   = null;
 }
Exemple #8
0
        /// <summary>
        /// Generates a match object from its XML representation.
        /// </summary>
        /// <param name="reader"></param>
        void IXmlSerializable.ReadXml(System.Xml.XmlReader reader)
        {
            try
            {
                reader.MoveToContent();

                String _ID       = reader.GetAttribute("ID");
                String _LogLevel = reader.GetAttribute("LogLevel");
                String _Surface  = reader.GetAttribute("Surface");
                String _Type     = reader.GetAttribute("Type");

                ID           = System.Guid.Parse(_ID);
                LogLevel     = (LogLevelEnum)System.Enum.Parse(typeof(LogLevelEnum), _LogLevel);
                Location     = reader.GetAttribute("Location");
                MatchSurface = (Surface)System.Enum.Parse(typeof(Surface), _Surface);
                Type         = (MatchType)System.Enum.Parse(typeof(MatchType), _Type);

                while (!reader.EOF)
                {
                    if (reader.NodeType == System.Xml.XmlNodeType.Element)
                    {
                        switch (reader.Name)
                        {
                        case "Rules":
                        {
                            String _BestOutOf              = reader.GetAttribute("BestOutOf");
                            String _DeuceSuddendDeath      = reader.GetAttribute("DeuceSuddenDeath");
                            String _FinalSetIsTiebreak     = reader.GetAttribute("FinalSetIsTiebreak");
                            String _FinalSetTiebreakLength = reader.GetAttribute("FinalSetTieBreakLength");
                            String _NumberGamesPerSet      = reader.GetAttribute("NumberGamesPerSet");
                            String _TieBreakSameScoreOf    = reader.GetAttribute("TieBreakAtSameScoreOf");
                            String _TieBreakFinalSet       = reader.GetAttribute("TieBreakFinalSet");
                            String _TieBreakLength         = reader.GetAttribute("TieBreakLength");

                            BestOutOf              = int.Parse(_BestOutOf);
                            DeuceSuddenDeath       = bool.Parse(_DeuceSuddendDeath);
                            FinalSetIsTiebreak     = bool.Parse(_FinalSetIsTiebreak);
                            FinalSetTieBreakLength = int.Parse(_FinalSetTiebreakLength);
                            NumberGamesPerSet      = int.Parse(_NumberGamesPerSet);
                            TieBreakAtSameScoreOf  = int.Parse(_TieBreakSameScoreOf);
                            TieBreakFinalSet       = bool.Parse(_TieBreakFinalSet);
                            TieBreakLength         = int.Parse(_TieBreakLength);

                            reader.Read();

                            break;
                        }

                        case "Status":
                        {
                            String _Status = reader.GetAttribute("Status");
                            String _NextContestantToServe = reader.GetAttribute("NextContestantToServe");
                            String _Winner = reader.GetAttribute("Winner");

                            NextContestantToServe = (_NextContestantToServe == "1") ? Contestant1 : Contestant2;
                            Winner = int.Parse(_Winner);
                            Status = (MatchStatus)System.Enum.Parse(typeof(MatchStatus), _Status);

                            reader.Read();

                            break;
                        }

                        case "Duration":
                        {
                            Duration.ReadXml(reader);

                            break;
                        }

                        case "Contestant1":
                        {
                            Contestant1.ReadXml(reader);

                            break;
                        }

                        case "Contestant2":
                        {
                            Contestant2.ReadXml(reader);

                            break;
                        }

                        case "Statistics":
                        {
                            Statistics.ReadXml(reader);

                            break;
                        }

                        case "Sets":
                        {
                            while (reader.Read() && !(reader.Name == "Sets" && reader.NodeType == System.Xml.XmlNodeType.EndElement))
                            {
                                if (reader.NodeType == System.Xml.XmlNodeType.Element)
                                {
                                    if (reader.Name == "Set")
                                    {
                                        TennisSet _newSet = new TennisSet(this);
                                        _newSet.ReadXml(reader);

                                        Sets.Add(_newSet);
                                    }
                                }
                            }

                            break;
                        }

                        default:

                            reader.Read();

                            break;
                        }
                    }
                    else
                    {
                        reader.Read();
                    }
                }
            }
            catch (Exception e)
            {
            }
        }