// sort rider order according to their previous times, as far as possible, // with seeds at each 10,20,30,... and 5,15,25... etc. private void SeededSortPart(ref List<Entry> sortedRows, ref List<Entry> newRows, int seed) { // use a TimeSpan for start & end times, to avoid date apeparing in columns //TimeSpan startTimeSpan = new TimeSpan(StartTime.Hour, StartTime.Minute, 0); long start = this.Time; int ridersToSort = sortedRows.Count; int digitsToSort = ridersToSort / 10; if (seed <= ridersToSort % 10) ++digitsToSort; //for (int row = 0; row < timeTrial1.Riders.Count; row++) //{ // if (row >= ridersToSort) // // rest of riders are not in event // break; // the rider number that now needs to be first //int riderNumber = (int)sortedRows[row]["Number"]; foreach (Entry rRow in sortedRows) { // if (rRow.Number == riderNumber) { //Rider r = new Rider(rRow); Entry entry = new Entry(rRow.Number, rRow.Start, rRow.Finish, rRow.RiderID, rRow.Position); //TimeTrial1.EventRow eRow; if (newRows.Find(delegate(Entry newrow) { return entry.RiderID == newrow.RiderID; }) != null) // rider already placed continue; //eRow = timeTrial1.Event.NewEventRow(); //eRow.Name = r.name; //eRow.Club = r.club; //eRow.Category = r.cat.ToString(); //eRow.VetStd = r.VetStandardTime(int.Parse(this.comboDistance.Text)); if (digitsToSort > 0 /*&& (int)sortedRows[row]["Number"] == -1*/) { entry.Number = digitsToSort * 10 + seed - 10; //if (seed == 10) eRow.Number -= 10; ; --digitsToSort; } else continue; // entry.Start = startTimeSpan.Add(new TimeSpan(0, entry.Number, 0)); entry.Start = start + entry.Number * 60 * 1000; //entry.TimeAggregate = ConvertTarget(r.timeAggregate); newRows.Add(entry); } } //} }
public Event(int id, int courseID, long start, int clubid, Entry[] elist) { ID = id; CourseID = courseID; ClubID = clubid; StartTime = new DateTime(start); Time = start; Entries = elist; OddData = 0; }