public static void Init()
 {
     if (!TransportLineMod.TryLoadData(out TransportLineMod._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 (int index = 0; index < length; ++index)
         {
             if (instance2.m_lines.m_buffer[index].Complete)
             {
                 int num = instance2.m_lines.m_buffer[index].CountVehicles((ushort)index);
                 TransportLineMod._lineData[index].TargetVehicleCount = num;
             }
             else
             {
                 TransportLineMod._lineData[index].TargetVehicleCount = ImprovedPublicTransportMod.Settings.DefaultVehicleCount;
             }
             TransportLineMod._lineData[index].BudgetControl = ImprovedPublicTransportMod.Settings.BudgetControl;
             TransportLineMod._lineData[index].Depot         = TransportLineMod.GetClosestDepot((ushort)index, instance1.m_nodes.m_buffer[(int)instance2.m_lines.m_buffer[index].GetStop(0)].m_position);
             TransportLineMod._lineData[index].Unbunching    = ImprovedPublicTransportMod.Settings.Unbunching;
         }
     }
     SerializableDataExtension.instance.EventSaveData += new SerializableDataExtension.SaveDataEventHandler(TransportLineMod.OnSaveData);
     if (!TransportLineMod._isDeployed)
     {
         TransportLineMod._redirectionSimulationStep = new Redirection <TransportLine, TransportLineMod>("SimulationStep");
         TransportLineMod._redirectionUpdateMeshData = new Redirection <TransportLine, TransportLineMod>("UpdateMeshData", false);
         if (!ImprovedPublicTransportMod.Settings.CompatibilityMode)
         {
             TransportLineMod.DetourUpdateMeshData();
         }
         TransportLineMod._isDeployed = true;
     }
     TransportLineMod._init = true;
 }