public static void Init() { if (!TryLoadData(out _lineData)) { Utils.Log((object)"Loading default transport line data."); NetManager instance1 = Singleton <NetManager> .instance; TransportManager instance2 = Singleton <TransportManager> .instance; int length = instance2.m_lines.m_buffer.Length; for (ushort index = 0; index < length; ++index) { if (instance2.m_lines.m_buffer[index].Complete) { _lineData[index].TargetVehicleCount = TransportLineDetour.CountLineActiveVehicles(index, out int _); } else { _lineData[index].TargetVehicleCount = OptionsWrapper <Settings> .Options.DefaultVehicleCount; } _lineData[index].BudgetControl = OptionsWrapper <Settings> .Options.BudgetControl; _lineData[index].Depot = DepotUtil.GetClosestDepot((ushort)index, instance1.m_nodes.m_buffer[(int)instance2.m_lines.m_buffer[index].GetStop(0)].m_position); _lineData[index].Unbunching = OptionsWrapper <Settings> .Options.Unbunching; } } SerializableDataExtension.instance.EventSaveData += new SerializableDataExtension.SaveDataEventHandler(OnSaveData); _init = true; }
//based off code in TransportLine.SimulationStep public static void RemoveActiveVehicle(ushort lineID, bool descreaseTargetVehicleCount, int activeVehiclesCount) { ushort activeVehicle = TransportLineDetour.GetActiveVehicle( ref Singleton <TransportManager> .instance.m_lines.m_buffer[(int)lineID], Singleton <SimulationManager> .instance.m_randomizer.Int32((uint)activeVehiclesCount)); if ((int)activeVehicle != 0) { TransportLineUtil.RemoveVehicle(lineID, activeVehicle, descreaseTargetVehicleCount); } }
private void OnRemoveVehicleClick(UIComponent component, UIMouseEventParameter eventParam) { SimulationManager.instance.AddAction(() => { ushort firstVehicle = 0; ushort lineId = this.GetLineID(out firstVehicle); if ((int)lineId == 0 || (int)firstVehicle == 0) { return; } CachedTransportLineData.SetBudgetControlState(lineId, false); TransportLineDetour.RemoveVehicle(lineId, firstVehicle, true); }); }