public void Execute() { if (StartTime.HasValue) { startTimeCutAction = new CutRouteAction(Session, StartTime.Value + offset, CutType.Before); startTimeCutAction.Execute(); } if (EndTime.HasValue) { endTimeCutAction = new CutRouteAction(Session, EndTime.Value + offset, CutType.After); endTimeCutAction.Execute(); } addLapActions = new List<AddLapAction>(); foreach(Lap lap in Laps) { lap.Time += offset; if (lap.Time >= Session.Route.FirstWaypoint.Time && lap.Time <= Session.Route.LastWaypoint.Time) { var a = new AddLapAction(lap, Session); addLapActions.Add(a); a.Execute(); } } }
public void Cut(ParameterizedLocation parameterizedLocation, DateTime? time) { if (!time.HasValue) time = CurrentSession.Route.GetTimeFromParameterizedLocation(parameterizedLocation); using (var form = new RouteCutForm { InitialTime = time.Value }) { double distance = CurrentSession.Route.GetAttributeFromParameterizedLocation(WaypointAttribute.Distance, parameterizedLocation). Value; double totalDistance = CurrentSession.Route.LastWaypoint.Attributes[WaypointAttribute.Distance].Value; form.CutType = (distance < totalDistance/2 ? CutType.Before : CutType.After); if (form.ShowDialog() == DialogResult.OK) { mouseHoverHandle = null; var action = new CutRouteAction(CurrentSession, form.Time, form.CutType); ExecuteAction(action); DrawMap(MapDrawingFlags.Route | MapDrawingFlags.Markers); } } }