static void writeRaceResult(XmlWriter writer, RaceResultItem rri) { writer.WriteStartElement("raceresult"); writer.WriteStartElement("dsvlistpoints"); writer.WriteValue(rri.Participant.Points); writer.WriteEndElement(); writer.WriteStartElement("totaltime"); writer.WriteValue(formatTime(rri.TotalTime)); writer.WriteEndElement(); writer.WriteStartElement("racepoints"); writer.WriteValue(rri.Points); writer.WriteEndElement(); foreach (var x in rri.SubResults) { writer.WriteStartElement("runtime"); writer.WriteAttributeString("runnumber", x.Key.ToString()); writer.WriteStartElement("time_of_run"); writer.WriteValue(formatTime(x.Value.Runtime)); writer.WriteEndElement(); writer.WriteEndElement(); } writer.WriteEndElement(); }
public TopTenResult(RaceResultItem rri, double consideredDsvPoints, double racePoints) { RRI = rri; DSVPoints = consideredDsvPoints; RacePoints = racePoints; TopFive = false; }
void writeRaceResults(Race race) { // Step 1: split according to classified or not classified List <RaceResultItem> classified = new List <RaceResultItem>(); List <RaceResultItem> notClassified = new List <RaceResultItem>(); var results = race.GetResultViewProvider().GetView(); var lr = results as System.Windows.Data.ListCollectionView; foreach (var result in results.SourceCollection) { RaceResultItem item = result as RaceResultItem; if (item.ResultCode == RunResult.EResultCode.Normal && item.TotalTime != null) { classified.Add(item); } else { notClassified.Add(item); } } _writer.WriteStartElement("raceresults"); writeClassifiedCompetitors(classified); writeNotClassifiedCompetitors(notClassified); _writer.WriteEndElement(); }
bool didStart(RaceResultItem rri) { if (rri.SubResults.ContainsKey(1)) { return(rri.SubResults[1].RunResultCode != RunResult.EResultCode.NaS); } return(false); }
bool sexMatched(RaceResultItem rri) { if (_sex == char.MinValue) { return(true); } return(rri?.Participant?.Sex?.Name == _sex); }
public double CalculatePoints(RaceResultItem rri, bool withPenalty) { double penalty = 0.0; if (withPenalty) { penalty = _appliedPenalty; } if (_bestTime != null && rri.TotalTime != null) { return(Math.Round(_valueF * ((TimeSpan)rri.TotalTime).TotalSeconds / ((TimeSpan)_bestTime).TotalSeconds - _valueF + _valueA + penalty, 2)); } return(-1.0); }
void findBestFiveDSV() { _topFiveDSV = new List <RaceResultItem>(); for (int i = 0; i < 5; i++) { double bestPoints = double.MaxValue; RaceResultItem bestRRI = null; System.Collections.IEnumerable results = _vpSource.GetViewList(); if (results == null) { throw new Exception("calculation not possible"); } foreach (var item in results) { if (item is RaceResultItem rri) { if (sexMatched(rri) && didStart(rri)) { if (rri.Participant.Points < bestPoints) { // Esnure not yet added if (!_topFiveDSV.Exists(x => x == rri)) { bestPoints = rri.Participant.Points; bestRRI = rri; } } } } } if (bestRRI != null) { _topFiveDSV.Add(bestRRI); } } }
static string mapResultCode(RaceResultItem rri) { string resultCode = "UNKNOWN"; foreach (KeyValuePair <uint, RaceResultItem.SubResult> kvp in rri.SubResults.OrderBy(k => k.Key)) { if (kvp.Value.RunResultCode != RunResult.EResultCode.Normal) { resultCode = mapResultCode(kvp.Value.RunResultCode); if (kvp.Key == 1) { resultCode += "1"; } else if (kvp.Key == 2) { resultCode += "2"; } break; } } return(resultCode); }
bool hasResult(RaceResultItem rri) { return(rri.Position > 0); }