Exemplo n.º 1
0
        /// <inheritdoc />
        public TimePointQueue GetTimerQueue(Preset preset, bool preserveBaseTime = true)
        {
            if (preset?.TimePointCollection == null || preset.TimePointCollection.Count == 0)
            {
                return(null);
            }

            TimePointQueue queue = new Queue <(TimeSpan, TimePoint)>();

            TimeSpan  time           = preset.StartTime;
            TimePoint startTimePoint = _startTimePointCreator.GetStartTimePoint(time);

            time = startTimePoint.GetAbsoluteTime();
            queue.Enqueue((time, startTimePoint));

            foreach (var timerCycle in preset.TimerLoopDictionary.Keys)
            {
                if (preset.TimePointCollection.Count > 1)
                {
                    // Список временных точек каждого временного сегмента, порядоченный по Id (по порядку создания)
                    var timePoints = preset.TimePointCollection
                                     .Where(t => t.LoopNumber == timerCycle)
                                     .OrderBy(t => t.Id)
                                     .ToList();

                    if (timePoints.Count > 1)
                    {
                        for (var i = 0; i < preset.TimerLoopDictionary[timerCycle]; ++i)
                        {
                            foreach (var nextTimePoint in timePoints)
                            {
                                time = nextTimePoint.GetAbsoluteTime(time, preserveBaseTime);
                                queue.Enqueue((time, nextTimePoint));
                            }
                        }
                    }
                    else if (timePoints.Count == 1)
                    {
                        for (var i = 0; i < preset.TimerLoopDictionary[timerCycle]; ++i)
                        {
                            time = timePoints[0].GetAbsoluteTime(time, preserveBaseTime);
                            queue.Enqueue((time, timePoints[0]));
Exemplo n.º 2
0
 public static bool IsStartTimePoint(TimePoint timePoint, Preset preset)
 => timePoint != null &&
 preset != null &&
 preset.StartTime.Equals(timePoint.GetAbsoluteTime()) &&
 timePoint.Name.Equals(START_TIMEPOINT_NAME);