예제 #1
0
 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));
         }
     }
 }
예제 #2
0
        public bool ParseAndAddNewSegments(string newSegmentText)
        {
            var newSegments = RaceSegment.Parse(newSegmentText);

            AddSegments(newSegments);
            return(true);
        }
예제 #3
0
 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);
 }