public void Append(Checkpoint cp) { Checkpoints.Add(cp); if (finishForced) { return; } var position = positions.GetOrAdd(cp.RiderId, x => RoundPosition.FromStartTime(x, RoundStartTime)); if (position.Finished) { return; } position.Append(cp); if (Track.Count < position.LapCount) { Track.Add(new List <Checkpoint>()); } Track[position.LapCount - 1].Add(cp); if (FinishCriteria?.HasFinished(position, GetSequence(), false) == true) { position.Finish(); } rating = null; }
public void ForceFinish() { foreach (var position in Rating.Where(x => !x.Finished).ToList()) { if (FinishCriteria?.HasFinished(position, Rating, true) == true) { position.Finish(); UpdateSequence(position); } } finishForced = true; }
public void ForceFinish() { foreach (var position in GetSequence()) { if (FinishCriteria?.HasFinished(position, GetSequence(), true) == true) { position.Finish(); } } finishForced = true; rating = null; }