public void DurationEndTimeNull() { var start = DateTime.UtcNow; var data = new DurationData(start, null); data.Duration.Should().BeNull(); }
public void DurationStartTimeNull() { var end = DateTime.UtcNow; var data = new DurationData(null, end); data.Duration.Should().BeNull(); }
public ContinuousEffect(OID source, Duration duration, DurationData data, Modification[] modifications) : this(source, duration, data) { foreach (var mod in modifications) { AddModification(mod); } }
public void Duration() { var start = DateTime.UtcNow; var end = DateTime.Now; var data = new DurationData(start, end); data.Duration.Should().Be(end - start); }
public void InitStartTimeNull() { var end = DateTime.Now; var data = new DurationData(null, end); data.StartTime.Should().BeNull(); data.EndTime.Should().Be(end); }
public void InitEndTimeNull() { var start = DateTime.UtcNow; var data = new DurationData(start, null); data.StartTime.Should().Be(start); data.EndTime.Should().BeNull(); }
public void Init() { var start = DateTime.UtcNow; var end = DateTime.Now; var data = new DurationData(start, end); data.StartTime.Should().Be(start); data.EndTime.Should().Be(end); }
public void UpdateValues(VehicleScheduleData data, RootTask _) { if (data != _scheduleData) { throw new ArgumentException("Schedule data is not for this ScheduleTotalIndicator"); } Locale locale = LazyManager <LocaleManager> .Current.Locale; IReadOnlyDictionary <Item, TransferData> routeTotalTransfers = null; if (_capacityIndicator != null) { _lastTotalTransfers = data.Capacity.GetTotalTransfers(); routeTotalTransfers = RouteTotalTransfers; } int itemsLimit = routeTotalTransfers != null ? 7 : 10; _lastTransfersPerStation = null; _lastMonthMultiplier = data.ScheduleMonthlyMultiplier; _lastTotalTime = data.ScheduleAvereageDuration; _lastInaccurate = _lastTotalTime is { Estimated : true }; _lastInaccurate = false; if (_text != null) { itemsLimit = routeTotalTransfers != null ? 3 : 5; if (_lastTotalTime != null) { _lastInaccurate = _lastTotalTime.Estimated; _text.text = locale.GetString("schedule_stopwatch/days_hours").Format(((int)_lastTotalTime.Duration.TotalDays).ToString("N0"), _lastTotalTime.Duration.Hours.ToString("N0")); if (_lastInaccurate) { _text.color = Color.gray; } else { _text.color = Color.black; } } else { _text.text = locale.GetString("schedule_stopwatch/unknown").ToUpper(); } } if (_capacityIndicator != null) { _lastTotalTransfers = data.Capacity.GetTotalTransfers(); _capacityIndicator.UpdateItems(_lastTotalTransfers, _lastMonthMultiplier, routeTotalTransfers, itemsLimit: itemsLimit, transfDirection: TransferDirection.unloading); } }
private void Invalidate() { if (_isDirty) { _totalTravelAverage = _travelData.GetAverageDuration(_lastSnapshot.GetNonNonstopTasks()); _totalStationLoadingAverage = _stationLoadingData.GetAverageDuration(_lastSnapshot.GetNonNonstopTasks()); _totalAverage = _totalStationLoadingAverage != null && _totalTravelAverage != null ? _totalStationLoadingAverage + _totalTravelAverage : null; _averageSpeed = null; float?distance; if (_totalTravelAverage != null && (distance = _travelData.GetTravelledDistance(_lastSnapshot.GetNonNonstopTasks())) != null) { _averageSpeed = distance.Value / ((float)_totalTravelAverage.Duration.TotalSeconds / TimeManager.GameSecondsPerSecond) * 5f; } _isDirty = false; } }
public DurationData GetAverageDuration(RootTask task) { if (!_data.TryGetValue(task, out DurationDataSet dataSet)) { return(null); } TimeSpan?average = dataSet.Average; if (!average.HasValue) { return(null); } DurationData durationData = new DurationData(average.Value, dataSet.Estimated); return(durationData); }
//Gets sum of average duration for all tasks in the list. If some task is missing data, returns null public DurationData GetAverageDuration(IEnumerable <RootTask> tasks) { TimeSpan result = default; bool estimated = false; foreach (RootTask task in tasks) { DurationData duration = GetAverageDuration(task); if (duration == null) { return(null); } result += duration.Duration; estimated |= duration.Estimated; } return(new DurationData(result, estimated)); }
public ContinuousEffect(OID source, Duration duration, DurationData?data = null) { this.source = source; this.duration = duration; if (data.HasValue) { durationData = data.Value; } else { durationData = new DurationData(); } if (!IsDurationDataValid()) { throw new ArgumentException($"Duration data invalid for {duration}"); } }
public void UpdateValues(VehicleScheduleData data, RootTask _) { if (data != _scheduleData || data == null) { throw new ArgumentException("Schedule data is not for this ScheduleTaskIndicator"); } Locale locale = LazyManager <LocaleManager> .Current.Locale; if (_travelTimeText != null) { DurationData travel = _lastTravelData = data.GetAverageTravelDuration(Task); if (travel != null) { _travelTimeText.text = locale.GetString("schedule_stopwatch/days_hours").Format(((int)travel.Duration.TotalDays).ToString("N0"), travel.Duration.Hours.ToString("N0")); if (travel.Estimated) { _travelTimeText.color = Color.gray; } else { _travelTimeText.color = Color.black; } } else { _travelTimeText.text = locale.GetString("schedule_stopwatch/unknown").ToUpper(); } DurationData loading = _lastStationLoadingData = data.GetAverageStationLoadingDuration(Task); if (loading != null) { _loadingTimeText.text = locale.GetString("schedule_stopwatch/hours_minutes").Format(((int)loading.Duration.TotalHours).ToString("N0"), loading.Duration.Minutes.ToString("N0")); if (loading.Estimated) { _loadingTimeText.color = Color.grey; } else { _loadingTimeText.color = Color.black; } } else { _loadingTimeText.text = locale.GetString("schedule_stopwatch/unknown").ToUpper(); } } if (_loadCapacityIndicator != null || _unloadCapacityIndicator != null) { _lastMonthMultiplier = data.ScheduleMonthlyMultiplier; _lastTaskTransfers = _scheduleData.Capacity.GetTransfers(Task); IReadOnlyDictionary <Item, TransferData> routeTransfers = RouteTaskTransfers; int itemsLimit; if (routeTransfers != null && routeTransfers.Count > 0) { itemsLimit = _travelTimeText != null ? 2 : 5; } else { itemsLimit = _travelTimeText != null ? 4 : 8; } if (_unloadCapacityIndicator != null) { _unloadCapacityIndicator.UpdateItems(_lastTaskTransfers, _lastMonthMultiplier, routeTransfers, transfDirection: TransferDirection.unloading, itemsLimit); _unloadCapacityIndicator.gameObject.SetActive(_unloadCapacityIndicator.ItemsCount > 0); _unloadingCapIcon.gameObject.SetActive(_unloadCapacityIndicator.ItemsCount > 0); itemsLimit -= Math.Min(_unloadCapacityIndicator.ItemsCount, 1); } if (_loadCapacityIndicator != null) { _loadCapacityIndicator.UpdateItems(_lastTaskTransfers, _lastMonthMultiplier, routeTransfers, transfDirection: TransferDirection.loading, itemsLimit); _loadCapacityIndicator.gameObject.SetActive(_loadCapacityIndicator.ItemsCount > 0); _loadingCapIcon.gameObject.SetActive(_loadCapacityIndicator.ItemsCount > 0); } } }
public void DurationBothNull() { var data = new DurationData(null, null); data.Duration.Should().BeNull(); }