Пример #1
0
        // IntegrateList takes a list of machine events and merges them into the machine event list.
        // Note: This method assumes that the methods being merged into the new list
        // are machine events only, and do not include custom events.
        private void IntegrateList(IProductionEvents source, IProductionEvents target)
        {
            if (source.Count() == 0)
            {
                return;
            }

            if (source.Count() > 1)
            {
                source.Sort();
            }

            target.CopyEventsFrom(source);
            target.Collate(_targetLists);
        }
Пример #2
0
        public bool IsNextEventSuitable(int stamp, DateTime _time)
        {
            if (Stamp != stamp || Index < 0)
            {
                return(false);
            }

            int EventListCount = EventList.Count();

            int NewIndex = Index + 1;

            if (NewIndex < EventListCount)
            {
                DateTime NewEndDate;
                T        NewNextEvent;

                int NewNextEventIndex = NewIndex + 1;
                if (NewNextEventIndex < EventListCount)
                {
                    EventList.GetStateAtIndex(NewNextEventIndex, out NewEndDate, out NewNextEvent);
                }
                else
                {
                    NewNextEvent = default;
                    NewEndDate   = Consts.MAX_DATETIME_AS_UTC;
                }

                if (_time < NewEndDate)
                {
                    Index = NewIndex;

                    StartDate = EndDate;
                    EndDate   = NewEndDate;

                    ThisEvent = NextEvent;
                    NextEvent = NewNextEvent;

                    return(true);
                }
            }
            return(false);
        }