private void SyncTurnsAndSegments() { if (!IsRunning) { return; } lock (_syncObject) { var prevCurrentSegment = CurrentSegment; //FIRST turn - is start //LAST turn - is finish var lastTurn = Turns.LastOrDefault(); var lastTurnNo = lastTurn != null ? lastTurn.No : 0; foreach (var s in Segments) { s.Passed = s.No < lastTurnNo; s.IsCurrent = s.No == lastTurnNo; } _currentSegment = null; if (prevCurrentSegment != CurrentSegment) { RaisePropertyChanged(nameof(CurrentSegment)); RaisePropertyChanged(nameof(TimeAtTheEndOfCurrentSegment)); RaisePropertyChanged(nameof(TimeOffsetAtTheEndOfCurrentSegment)); } } }
public bool ParseAndAddNewSegments(string newSegmentText) { var newSegments = RaceSegment.Parse(newSegmentText); AddSegments(newSegments); return(true); }
public bool AddSegment(RaceSegment segment) { lock (_syncObject) { var last = Segments.LastOrDefault(); var lastNo = last != null ? last.No : 0; segment.No = lastNo + 1; if (Math.Abs(segment.Speed) < 0.0001) { return(false); } Segments.Add(segment); } return(true); }