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++; } } } }
/// <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()); }
/// <summary> /// Stop the this match /// </summary> public void End(MatchStatus newStatus) { Status = newStatus; Duration.End(); TennisSet _set = currentSet(); if (_set != null) { _set.End(Winner); } }
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); }
/// <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; }
/// <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) { } }