Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 public TopTenResult(RaceResultItem rri, double consideredDsvPoints, double racePoints)
 {
     RRI        = rri;
     DSVPoints  = consideredDsvPoints;
     RacePoints = racePoints;
     TopFive    = false;
 }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
 bool didStart(RaceResultItem rri)
 {
     if (rri.SubResults.ContainsKey(1))
     {
         return(rri.SubResults[1].RunResultCode != RunResult.EResultCode.NaS);
     }
     return(false);
 }
Ejemplo n.º 5
0
        bool sexMatched(RaceResultItem rri)
        {
            if (_sex == char.MinValue)
            {
                return(true);
            }

            return(rri?.Participant?.Sex?.Name == _sex);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
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);
                }
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
 bool hasResult(RaceResultItem rri)
 {
     return(rri.Position > 0);
 }