private void RecountRows(TimeableList <BudgetEntryXml> config, int?stopsCount)
        {
            UVMBudgetEditorLine[] currentLines = m_entryListContainer.GetComponentsInChildren <UVMBudgetEditorLine>();
            m_timeRows = new List <UVMBudgetEditorLine>();
            int count = 0;

            for (int i = 0; i < stopsCount; i++, count++)
            {
                if (i < currentLines.Length)
                {
                    currentLines[i].SetLegendInfo(GetColorForNumber(i));
                    m_timeRows.Add(currentLines[i]);
                    currentLines[i].Entry = config[i];
                }
                else
                {
                    UVMBudgetEditorLine line = KlyteMonoUtils.CreateElement <UVMBudgetEditorLine>(m_entryListContainer.transform);
                    line.Entry = config[i];
                    line.SetLegendInfo(GetColorForNumber(i));
                    line.OnTimeChanged   += ValidateTime;
                    line.OnDie           += RemoveTime;
                    line.OnBudgetChanged += SetBudget;
                    m_timeRows.Add(line);
                }
            }
            for (int i = count; i < currentLines.Length; i++)
            {
                GameObject.Destroy(currentLines[i].gameObject);
            }
        }
        public static uint GetBudgetMultiplierForHourForLine <T>(this T it, ushort lineId, float hour) where T : IBudgetableExtension
        {
            TimeableList <BudgetEntryXml> budget = it.GetBudgetsMultiplierForLine(lineId);
            Tuple <Tuple <BudgetEntryXml, int>, Tuple <BudgetEntryXml, int>, float> currentBudget = budget.GetAtHour(hour);

            return((uint)Mathf.Lerp(currentBudget.First.First.Value, currentBudget.Second.First.Value, currentBudget.Third));
        }
Пример #3
0
        private void RecountRows(TimeableList <TicketPriceEntryXml> config, int?stopsCount, ref TransportLine tl)
        {
            TLMTicketPriceEditorLine[] currentLines = m_entryListContainer.GetComponentsInChildren <TLMTicketPriceEditorLine>();
            m_timeRows = new List <TLMTicketPriceEditorLine>();
            var  tsd            = TransportSystemDefinition.GetDefinitionForLine(ref tl);
            uint maxTicketPrice = TLMLineUtils.GetTicketPriceForLine(tsd, 0).First.Value * 5;
            int  count          = 0;

            for (int i = 0; i < stopsCount; i++, count++)
            {
                if (i < currentLines.Length)
                {
                    currentLines[i].SetLegendInfo(GetColorForNumber(i), maxTicketPrice);
                    m_timeRows.Add(currentLines[i]);
                    currentLines[i].Entry = config[i];
                }
                else
                {
                    TLMTicketPriceEditorLine line = KlyteMonoUtils.CreateElement <TLMTicketPriceEditorLine>(m_entryListContainer.transform);
                    line.Entry = config[i];
                    line.SetLegendInfo(GetColorForNumber(i), maxTicketPrice);
                    line.OnTimeChanged   += ValidateTime;
                    line.OnDie           += RemoveTime;
                    line.OnBudgetChanged += SetBudget;
                    m_timeRows.Add(line);
                }
            }
            for (int i = count; i < currentLines.Length; i++)
            {
                GameObject.Destroy(currentLines[i].gameObject);
            }
        }
        private void RemoveTime(BudgetEntryXml entry)
        {
            TimeableList <BudgetEntryXml> config = TLMLineUtils.GetEffectiveConfigForLine(UVMPublicTransportWorldInfoPanel.GetLineID()).BudgetEntries;

            if (config != default)
            {
                config.RemoveAtHour(entry.HourOfDay ?? -1);
                m_isDirty = true;
            }
        }
        private void AddEntry()
        {
            TimeableList <BudgetEntryXml> config = TLMLineUtils.GetEffectiveConfigForLine(UVMPublicTransportWorldInfoPanel.GetLineID()).BudgetEntries;

            config.Add(new BudgetEntryXml()
            {
                HourOfDay = 0,
                Value     = 100
            });
            RebuildList(UVMPublicTransportWorldInfoPanel.GetLineID());
        }
Пример #6
0
        public static Tuple <float, int, int, float, bool> GetBudgetMultiplierLineWithIndexes(ushort lineId)
        {
            IBasicExtensionStorage        currentConfig = GetEffectiveConfigForLine(lineId);
            TimeableList <BudgetEntryXml> budgetConfig  = currentConfig.BudgetEntries;

            if (budgetConfig.Count == 0)
            {
                GetEffectiveExtensionForLine(lineId).SetBudgetMultiplierForLine(lineId, Singleton <TransportManager> .instance.m_lines.m_buffer[lineId].m_budget, 0);
                currentConfig = GetEffectiveConfigForLine(lineId);
                budgetConfig  = currentConfig.BudgetEntries;
            }
            Tuple <Tuple <BudgetEntryXml, int>, Tuple <BudgetEntryXml, int>, float> currentBudget = budgetConfig.GetAtHour(ReferenceTimer);

            return(Tuple.New(Mathf.Lerp(currentBudget.First.First.Value, currentBudget.Second.First.Value, currentBudget.Third) / 100f, currentBudget.First.Second, currentBudget.Second.Second, currentBudget.Third, currentConfig is TLMTransportLineConfiguration));
        }
Пример #7
0
        public void RebuildList(ushort lineID)
        {
            TimeableList <TicketPriceEntryXml> config = TLMLineUtils.GetEffectiveConfigForLine(lineID).TicketPriceEntries;
            int stopsCount = config.Count;

            if (stopsCount == 0)
            {
                config.Add(new TicketPriceEntryXml()
                {
                    HourOfDay = 0,
                    Value     = 0
                });
            }

            RecountRows(config, stopsCount, ref TransportManager.instance.m_lines.m_buffer[lineID]);
            RedrawList();
        }
        public void RebuildList(ushort lineID)
        {
            Interfaces.IBasicExtensionStorage effectiveConfig = TLMLineUtils.GetEffectiveConfigForLine(lineID);
            TimeableList <BudgetEntryXml>     budgetEntries   = effectiveConfig.BudgetEntries;
            int stopsCount = budgetEntries.Count;

            if (stopsCount == 0)
            {
                budgetEntries.Add(new BudgetEntryXml()
                {
                    HourOfDay = 0,
                    Value     = effectiveConfig is TLMTransportLineConfiguration ? 100u : TransportManager.instance.m_lines.m_buffer[lineID].m_budget
                });
            }

            RecountRows(budgetEntries, stopsCount);
            RedrawList();
        }
        public static Tuple <TicketPriceEntryXml, int> GetTicketPriceForHourForLine <T>(this T it, ushort lineId, float hour) where T : ITicketPriceExtension
        {
            TimeableList <TicketPriceEntryXml> ticketPrices = it.GetTicketPricesForLine(lineId);

            return(ticketPrices.GetAtHourExact(hour));
        }
 public static void SetTicketPricesForLine <T>(this T it, ushort lineId, TimeableList <TicketPriceEntryXml> newPrices) where T : ITicketPriceExtension => it.SafeGet(it.LineToIndex(lineId)).TicketPriceEntries = newPrices;
 public static void SetAllBudgetMultipliersForLine <T>(this T it, ushort lineId, TimeableList <BudgetEntryXml> newValue) where T : IBudgetableExtension => it.SafeGet(it.LineToIndex(lineId)).BudgetEntries = newValue;