Пример #1
0
        public void Initialize(VehicleScheduleData data, Settings settings)
        {
            Transform timeIndicator = transform.Find("TimeIndicator");

            if (settings.ShowScheduleTotalTime)
            {
                _text = timeIndicator.Find("TotalTimeText").GetComponent <Text>();
                Locale locale = LazyManager <LocaleManager> .Current.Locale;
                Tooltip.For(timeIndicator,
                            GetTotalTimeTooltipText,
                            0);
            }
            else
            {
                timeIndicator.SetActive(false);
            }

            if (settings.ShowTotalTransferCapacity)
            {
                _capacityIndicator = transform.GetComponentInChildren <CargoCapacityIndicator>();
                _capacityIndicator.Initialize(null, null);
                Tooltip.For(
                    _capacityIndicator,
                    () => GetCapacityTooltipText(),
                    0
                    );
            }
            _scheduleData = data;
            UpdateValues(data, null);
        }
        private static void VehicleWindowScheduleTabSeparatorView_Initialize_pof(VehicleWindowDetailsTabBodyItem __instance, int index, VehicleUnit vehicleUnit)
        {
            VehicleScheduleData scheduleData = Manager <VehicleScheduleDataManager> .Current[vehicleUnit.Vehicle];

            if (scheduleData != null)
            {
                Tooltip.For(__instance, () => GetToolTipText(vehicleUnit.Vehicle, index), 0);
            }
        }
Пример #3
0
 public void Initialize(VehicleScheduleData vehicleScheduleData)
 {
     ScheduleTab = gameObject.GetComponent <VehicleWindowScheduleTab>();
     if (ScheduleTab == null)
     {
         throw new NullReferenceException("Component VehicleWindowScheduleTab not found");
     }
     ScheduleData = vehicleScheduleData;
 }
Пример #4
0
        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);
            }
        }
        public void Initialize(RootTask task, VehicleScheduleData data, Settings settings)
        {
            Task           = task;
            _scheduleData  = data;
            transform.name = "StopWatchDuration";
            Transform timeIndicator = transform.Find("TimeIndicator");

            if (settings.ShowIndividualTaskTimes)
            {
                _travelTimeText  = timeIndicator.Find("TravelTimeText").GetComponent <Text>();
                _loadingTimeText = timeIndicator.Find("LoadingTimeText").GetComponent <Text>();
                Tooltip.For(
                    timeIndicator,
                    LazyManager <LocaleManager> .Current.Locale.GetString("schedule_stopwatch/task_times_hint")
                    );
            }
            else
            {
                timeIndicator.gameObject.SetActive(false);
            }

            if (settings.ShowIndividualLoadingCapacity)
            {
                _loadingCapIcon        = transform.Find("LoadingCapacityIcon");
                _loadCapacityIndicator = transform.Find("CargoCapacityLoad").GetComponent <CargoCapacityIndicator>();
                _loadCapacityIndicator.Initialize(null, null);

                Tooltip.For(
                    _loadCapacityIndicator,
                    () => GetCapacityTooltipText(),
                    null
                    );
            }

            if (settings.ShowIndividualUnloadingCapacity)
            {
                _unloadCapacityIndicator = transform.Find("CargoCapacityUnload").GetComponent <CargoCapacityIndicator>();
                _unloadingCapIcon        = transform.Find("UnloadingCapacityIcon");
                _unloadCapacityIndicator.Initialize(null, null);

                Tooltip.For(
                    _unloadCapacityIndicator,
                    () => GetCapacityTooltipText(),
                    null
                    );
            }
            transform.gameObject.SetActive(true);
        }
        private static string GetToolTipText(Vehicle vehicle, int unitIndex)
        {
            VehicleScheduleData scheduleData = Manager <VehicleScheduleDataManager> .Current[vehicle];
            Locale locale = LazyManager <LocaleManager> .Current.Locale;

            if (scheduleData != null)
            {
                string result = ScheduleCapacityHelper.GetCapacityTooltipText(scheduleData.ScheduleMonthlyMultiplier, null, scheduleData.Capacity.GetTransfersPerStation(unitIndex), scheduleData.IsInacurate);
                if (result == "")
                {
                    if (scheduleData.ScheduleMonthlyMultiplier != null)
                    {
                        result = locale.GetString("schedule_stopwatch/no_transfers");
                    }
                    else
                    {
                        result = locale.GetString("schedule_stopwatch/no_transfers_data");
                    }
                }
                return(result);
            }
            return(locale.GetString("schedule_stopwatch/no_transfers_data"));
        }
        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);
                }
            }
        }