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)); }
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()); }
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)); }
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;