Beispiel #1
0
        public void FromDaysToMilliseconds_ShouldConvert1DayTo86400000Ms()
        {
            const int time = 1;

            var actual = TimeConverters.FromDaysToMilliseconds(time);

            Assert.AreEqual(86400000, actual);
        }
Beispiel #2
0
        public void FromSecondsToMilliseconds_ShouldConvert1SecondTo1000Ms()
        {
            const int time = 1;

            var actual = TimeConverters.FromSecondsToMilliseconds(time);

            Assert.AreEqual(1000, actual);
        }
        public void AutoFill()
        {
            ServiceName         = ServiceTemplate.ServiceTemplateName;
            ServiceAbbreviation = ServiceTemplate.ServiceTemplateAbbreviation;
            int StartTime = TimeConverters.TimeToMinutes(StartTimeText);

            EndTimeText = TimeConverters.MinutesToString(StartTime + ServiceTemplate.CalculatedDuration);
            NotifyOfPropertyChange(() => CanSaveService);
        }
 public void EditService()
 {
     ServiceName         = SelectedService.ServiceName;
     ServiceAbbreviation = SelectedService.ServiceAbbreviation;
     ServiceTemplate     = ServiceTemplateDataAccess.GetServiceTemplateById(SelectedService.ServiceTemplateId);
     ServiceId           = SelectedService.Id;
     StartTimeText       = TimeConverters.MinutesToString(SelectedService.StartTime);
     EndTimeText         = TimeConverters.MinutesToString(SelectedService.EndTime);
     NotifyOfPropertyChange(() => CanEditService);
     NotifyOfPropertyChange(() => CanSaveService);
     NotifyOfPropertyChange(() => CanRepeat);
 }
        private void PendTransfer()
        {
            if (Mathf.CeilToInt(_currentTime) == 0)
            {
                _done = true;

                QuickLogger.Debug($"Done: {_done}");

                var listOfItems = _items.ToList();

                for (int i = 0; i < _items.count; i++)
                {
                    _itemsToRemove.Add(listOfItems[i].item);
                }

                foreach (Pickupable pickupable in _itemsToRemove)
                {
                    if (_target.HasRoomFor(pickupable))
                    {
                        _mono.RemoveItem(pickupable);
                        _target.AddItem(new InventoryItem(pickupable));
                    }
                }

                ErrorMessage.AddMessage($"[{_target.Name} Message]: Shipment has arrived!");

                _itemsToRemove.Clear();
                _target.Recieved = true;
                _currentTime     = ResetTime;
                _mono.OnItemSent?.Invoke();
                _target.OnItemSent?.Invoke();
                _target.IsReceivingTransfer = false;

                _items  = null;
                _target = null;
            }
            else
            {
                _currentTime -= 1 * DayNightCycle.main.deltaTime;
            }

            if (_target != null)
            {
                _target.OnTimerChanged?.Invoke(TimeConverters.SecondsToHMS(_currentTime));
            }
            _mono.OnTimerChanged?.Invoke(TimeConverters.SecondsToHMS(_currentTime));
        }
Beispiel #6
0
        public PlottableScatter PlotService(ScottPlotGraph model, TimeGraphUIModel graph, string serviceAbbreviation)
        {
            int startTime = TimeConverters.TimeToMinutes(model.StartTimeText);
            int endTime   = TimeConverters.TimeToMinutes(model.EndTimeText);

            double[] dataX = new double[graph.DataLine.Count];
            double[] dataY = new double[graph.DataLine.Count];

            int j = 0;

            if (graph.DataLine[0].Y >= startTime && graph.DataLine[0].Y < endTime)
            {
                foreach (var dataSet in graph.DataLine)
                {
                    dataX[j] = dataSet.X;
                    dataY[j] = -dataSet.Y;
                    scatterDataX[scatterIndex] = dataSet.X;
                    scatterDataY[scatterIndex] = -dataSet.Y;
                    highlightedTimeGraphUiModels[scatterIndex] = graph;
                    scatterIndex++;
                    j++;
                }


                double        xOffset = 0;
                double        yOffset = 5;
                TextAlignment alignment;
                if (dataX[0] < dataX.GetLength(0) / 2)
                {
                    alignment = TextAlignment.upperLeft;
                }
                else
                {
                    alignment = TextAlignment.upperRight;
                }
                TimetableGraph.plt.PlotText(serviceAbbreviation,
                                            dataX[0] + xOffset, dataY[0] + yOffset, fontName: "Arial", fontSize: 10,
                                            color: GetResourceColor("GraphText"), bold: true, alignment: alignment);
                return(TimetableGraph.plt.PlotScatterHighlight(dataX, dataY, GetLineColor(graph.ServiceType)));
            }
            else
            {
                return(null);
            }
        }
Beispiel #7
0
        private void Desterilize()
        {
            if (_isDirty)
            {
                return;
            }

            if (QPatch.Configuration.Config.GetsDirtyOverTime)
            {
                _unitSanitation -= DayNightCycle.main.deltaTime;
                if (_unitSanitation <= 0)
                {
                    QuickLogger.Debug("Unit is dirty");
                    _isDirty        = true;
                    _unitSanitation = ThirtyDays;
                }
            }

            _mono.DisplayManager.UpdateTimeLeft(TimeConverters.SecondsToHMS(_unitSanitation));
        }
        public void SaveService()
        {
            ServiceModel newService = new ServiceModel();

            newService.ServiceName         = ServiceName;
            newService.ServiceAbbreviation = ServiceAbbreviation;
            newService.ServiceTemplateId   = ServiceTemplate.Id;
            newService.StartTime           = TimeConverters.TimeToMinutes(StartTimeText);
            newService.EndTime             = TimeConverters.TimeToMinutes(EndTimeText);
            if (ServiceId <= 0)
            {
                ServicesDataAccess.InsertService(newService);
            }
            else
            {
                newService.Id = ServiceId;
                ServicesDataAccess.UpdateService(newService);
            }
            ServiceList = new BindableCollection <ServiceModel>(ServicesDataAccess.GetServicesPerRoute(RouteId).OrderBy(x => x.StartTime));
            ClearService();
            NotifyOfPropertyChange(() => ServiceList);
        }
        private void PrepareDataSet()
        {
            TimeGraphUI      = new ObservableCollection <TimeGraphUIModel>();
            ServiceClassList = ServiceClassDataAccess.GetAllServiceClasses();
            var serviceList = new ObservableCollection <ServiceModel>(ServicesDataAccess.GetServicesPerTimetable(TimetableId));

            foreach (var service in serviceList)
            {
                var item = new TimeGraphUIModel();
                var serviceTemplateId = service.ServiceTemplateId;
                var serviceTemplate   = ServiceTemplateDataAccess.GetServiceTemplateById(serviceTemplateId);
                item.TimeEventList       = new BindableCollection <ExtendedFullTimeEventModel>(FullTimeEventDataAccess.GetAllExtendedFullTimeEventsPerServiceTemplate(serviceTemplateId));
                item.ServiceName         = service.ServiceName;
                item.ServiceAbbreviation = service.ServiceAbbreviation;
                item.ServiceType         = serviceTemplate.ServiceType;
                item.StartTimeText       = service.StartTimeText;
                item.EndTimeText         = service.EndTimeText;
                int actualTime = service.StartTime;
                foreach (var fullTimeEvent in item.TimeEventList)
                {
                    actualTime += fullTimeEvent.ArrivalTime;
                    fullTimeEvent.ArrivalTimeText = TimeConverters.MinutesToString(actualTime);
                    DataPoint point = GetFirstDataPoint(fullTimeEvent, actualTime);
                    item.DataLine.Add(point);
                    if (fullTimeEvent.WaitTime > 0)
                    {
                        actualTime += fullTimeEvent.WaitTime;
                        DataPoint point2 = GetSecondDataPoint(actualTime, point.X);
                        item.DataLine.Add(point2);
                    }
                    fullTimeEvent.DepartureTimeText = TimeConverters.MinutesToString(actualTime);
                }
                TimeGraphUI.Add(item);
            }
            OnPropertyChanged("TimeGraphUI");
        }
        private string TimeTilRefuel()
        {
            var mod = _timeLeft % KDayInSeconds;

            return(TimeConverters.SecondsToHMS(mod));
        }
Beispiel #11
0
        public static TimetableMatrixModel ReadTimetableMatrix(int timetableId, bool csvTarget)
        {
            // TODO wrap this all in a transaction, for better performance
            TimetableMatrixModel matrixModel = new TimetableMatrixModel();

            // Get TimetableMode to retrieve name

            var timetable = TimetableDataAccess.GetTimetableById(timetableId);

            matrixModel.TimetableName = timetable.TimetableName;
            matrixModel.TimetableId   = timetable.Id;
            matrixModel.RouteId       = timetable.RouteId;
            var direction = ServiceDirectionDataAccess.GetServiceDirectionById(timetable.ServiceDirectionId);

            matrixModel.IsDescending = direction.IsDescending;

            // Now get a view, representing Services

            List <ServiceModel> serviceList = ServicesDataAccess.GetServicesPerTimetable(timetable.Id);

            serviceList = serviceList.OrderBy(x => x.StartTime).ToList();

            var locationsList = LocationDataAccess.GetAllLocationsPerRoute(matrixModel.RouteId);

            if (matrixModel.IsDescending)
            {
                locationsList = locationsList.OrderByDescending(x => x.Order).ToList();
            }
            else
            {
                locationsList = locationsList.OrderBy(x => x.Order).ToList();
            }

            var locationsCount = locationsList.Count;

            matrixModel.Matrix = new string[locationsList.Count + 1][];
            var columncount = serviceList.Count + 1;

            string[] columnheaders = new string[columncount];
            columnheaders[0] = "---";
            for (int i = 0; i < columncount - 1; i++)
            {
                columnheaders[i + 1] = serviceList[i].ServiceAbbreviation;
            }
            matrixModel.Matrix[0] = columnheaders;
            for (int i = 0; i < locationsCount; i++)
            {
                string[] row = new string[columncount];
                row[0] = locationsList[i].LocationName;
                matrixModel.Matrix[i + 1] = row;
            }

            for (int index = 0; index < serviceList.Count; index++)
            {
                int actualTime = serviceList[index].StartTime;
                List <ServiceTimingModel> Timing;
                if (matrixModel.IsDescending)
                {
                    Timing = GetServiceTiming(serviceList[index].Id, locationsList).OrderByDescending(x => x.LocationsOrder).ToList();
                }
                else
                {
                    Timing = GetServiceTiming(serviceList[index].Id, locationsList);
                }
                int j = 0;
                for (int i = 0; i < locationsCount;)
                {
                    if (j < Timing.Count && locationsList[i].Order == Timing[j].LocationsOrder)
                    {
                        i++;
                        j++;
                    }
                    else
                    {
                        var Insert = new ServiceTimingModel();
                        Insert.LocationId     = locationsList[i].Id;
                        Insert.LocationName   = locationsList[i].LocationName;
                        Insert.LocationAbbrev = locationsList[i].LocationAbbreviation;
                        Insert.EventType      = "";
                        Insert.ArrivalTime    = 0;
                        Insert.WaitTime       = 0;
                        Insert.TimeString     = "--";
                        Insert.LocationsOrder = locationsList[i].Order;
                        Insert.TimeEventId    = -1;                      // TimeEvent is not valid!
                        Timing.Insert(j, Insert);
                        i++;
                        j++;
                    }
                }
                matrixModel.TimingList.Add(Timing);
            }

            for (int i = 0; i < columncount - 1; i++)             // for each service
            {
                int actualTime = serviceList[i].StartTime;
                var timing     = matrixModel.TimingList[i];
                for (int j = 0; j < locationsCount; j++)                 // for each location
                {
                    if (timing[j].TimeEventId > 0)
                    {
                        actualTime          += timing[j].ArrivalTime;
                        timing[j].TimeString = TimeConverters.TimeEventToString(actualTime, timing[j].WaitTime, csvTarget);
                        actualTime          += timing[j].WaitTime;
                    }
                    matrixModel.Matrix[j + 1][i + 1] = timing[j].TimeString;
                }
            }
            return(matrixModel);
        }