Beispiel #1
0
        TimeSpan?getAccumulatedTime(RaceRun rr, RunResultWithPosition resWp)
        {
            Race race = rr.GetRace();

            TimeSpan?ts = new TimeSpan();

            for (int i = 0; i < race.GetMaxRun(); i++)
            {
                RaceRun r = race.GetRun(i);
                if (r.Run <= rr.Run)
                {
                    TimeSpan?t = r.GetRunResult(resWp.Participant)?.Runtime;
                    if (t != null && ts != null)
                    {
                        ts = ts + (TimeSpan)t;
                    }
                    else
                    {
                        ts = null;
                    }
                }
            }

            return(ts);
        }
Beispiel #2
0
        public void UpdateResults(RaceRun raceRun)
        {
            if (!raceRun.HasResults())
            {
                return;
            }

            SetActiveRaceRun(raceRun);

            var results = ViewUtilities.ViewToList <RunResultWithPosition>(raceRun.GetResultView());

            RunResultWithPosition lastRR = null;

            foreach (var rr in results)
            {
                if (rr.ResultCode == RunResult.EResultCode.NotSet)
                {
                    continue;
                }

                scheduleTransfer(new LTTransfer(getXmlEventResult(raceRun, rr)));

                if (lastRR == null ||
                    (lastRR.StartTime != null && rr.StartTime != null && lastRR.StartTime < rr.StartTime)
                    )
                {
                    lastRR = rr;
                }
            }

            // Update livetiming with last known time
            if (lastRR != null)
            {
                scheduleTransfer(new LTTransfer(getXmlEventResult(raceRun, lastRR)));
            }
        }