// Opretter de legs der håndtere stræk for løberne private void LoadLegs() { for (int i = 1; i < ControlPoints.Count; i++) { Leg leg = new Leg(); leg.Name = string.Format("{0} - {1}", i - 1, i); foreach (Runner r in Runners) { RunnerData runnerdata = new RunnerData(); if (r.Visited[i].Cord != null) { runnerdata.reached = true; runnerdata.distance = Helper.CalcTotalLength(r, r.Visited[i - 1].Second, r.Visited[i].Second); runnerdata.time = TimeSpan.FromSeconds(r.Visited[i].Second - r.Visited[i - 1].Second); runnerdata.speed = Helper.CalcSpeedMinsPrKm(runnerdata.distance, (int)(runnerdata.time.TotalSeconds)); } else { runnerdata.reached = false; runnerdata.distance = 0; runnerdata.time = new TimeSpan(0); runnerdata.speed = 0; } runnerdata.name = r.RunnerName; leg.Runners.Add(runnerdata); } leg.Runners = Helper.GetPosAndDiff(leg.Runners); Legs.Add(leg); } }
// Laver nye instanser af Runners og RunnerData, og kalder passende funktioner der læser data ind. private void LoadRunners(string[] GPXFiles) { int ColorCount = 0; Runner runner; MainLeg.Name = string.Format("0 - {0}", ControlPoints.Count - 1); ControlPointTime cpt = new ControlPointTime(); bool reached; foreach (string file in GPXFiles) { runner = new Runner(); runner.ReadGPXData(new FileStream(file, FileMode.Open)); runner.reachedAll = true; runner.RouteColor = Colors[ColorCount % 6]; ColorCount++; reached = true; // Tester om Runner har nået posterne foreach (ControlPoint cp in ControlPoints) { cpt = new ControlPointTime(); cpt.ControlPointChecker(cp, runner); runner.Visited.Add(cpt); if (cpt.Cord == null) { reached = false; } } RunnerData runnerdata = new RunnerData(); runnerdata.name = runner.RunnerName; if (reached) { runnerdata.distance = Helper.CalcTotalLength(runner, runner.Visited[0].Second, runner.Visited[runner.Visited.Count - 1].Second); runnerdata.time = TimeSpan.FromSeconds(runner.Visited[runner.Visited.Count - 1].Second - runner.Visited[0].Second); runnerdata.speed = Helper.CalcSpeedMinsPrKm(runnerdata.distance, (int)(runnerdata.time.TotalSeconds)); } else { runnerdata.distance = 0; runnerdata.time = new TimeSpan(0); runnerdata.speed = 0; } runnerdata.reached = reached; MainLeg.Runners.Add(runnerdata); Runners.Add(runner); } MainLeg.Runners = Helper.GetPosAndDiff(MainLeg.Runners); }