public void OnLevelLoaded(LoadMode mode)
 {
     this._loadMode = mode;
     if (mode != LoadMode.LoadGame && mode != LoadMode.NewGame)
     {
         return;
     }
     try
     {
         Utils.Log((object)"Begin init version: 3.8.10");
         ImprovedPublicTransportMod.Settings.LogSettings();
         this.ReleaseUnusedCitizenUnits();
         UIView objectOfType = UnityEngine.Object.FindObjectOfType <UIView>();
         if ((UnityEngine.Object)objectOfType != (UnityEngine.Object)null)
         {
             this._iptGameObject = new GameObject("IptGameObject");
             this._iptGameObject.transform.parent = objectOfType.transform;
             this._iptGameObject.AddComponent <VehicleEditor>();
             this._iptGameObject.AddComponent <PanelExtenderLine>();
             this._iptGameObject.AddComponent <PanelExtenderVehicle>();
             this._iptGameObject.AddComponent <PanelExtenderCityService>();
             this._iptGameObject.AddComponent <SimHelper>();
             this._iptGameObject.AddComponent <LineWatcher>();
             this._worldInfoPanel = new GameObject("PublicTransportStopWorldInfoPanel");
             this._worldInfoPanel.transform.parent = objectOfType.transform;
             this._worldInfoPanel.AddComponent <PublicTransportStopWorldInfoPanel>().Show();
             NetManagerMod.Init();
             VehicleManagerMod.Init();
             BusAIMod.Init();
             PassengerTrainAIMod.Init();
             PassengerShipAIMod.Init();
             PassengerPlaneAIMod.Init();
             TramAIMod.Init();
             BuildingWatcher.instance.Init();
             LineWatcher.instance.Init();
             TransportLineMod.Init();
             VehiclePrefabs.Init();
             SerializableDataExtension.instance.Loaded = true;
             LocaleModifier.Init();
             Utils.Log((object)"Loading done!");
         }
         else
         {
             Utils.LogError((object)"UIView not found, aborting!");
         }
     }
     catch (Exception ex)
     {
         Utils.LogError((object)("Error during initialization, IPT disables itself." + System.Environment.NewLine + "Please try again without any other mod." + System.Environment.NewLine + "Please upload your log file and post the link here if that didn't help:" + System.Environment.NewLine + "http://steamcommunity.com/workshop/filedetails/discussion/424106600/615086038663282271/" + System.Environment.NewLine + ex.Message + System.Environment.NewLine + (object)ex.InnerException + System.Environment.NewLine + ex.StackTrace));
         this.Deinit();
     }
 }
 public static void Init()
 {
     if (NetManagerMod._isDeployed)
     {
         return;
     }
     if (!NetManagerMod.TryLoadData(out NetManagerMod.m_cachedNodeData))
     {
         Utils.Log((object)"Loading default net node data.");
     }
     NetManagerMod.PreReleaseNodeImplementation = (NetManagerMod.PreReleaseNodeImplementationCallback)Utils.CreateDelegate <NetManager, NetManagerMod.PreReleaseNodeImplementationCallback>("PreReleaseNodeImplementation", (object)Singleton <NetManager> .instance);
     NetManagerMod.ReleaseNodeImplementation    = (NetManagerMod.ReleaseNodeImplementationCallback)Utils.CreateDelegate <NetManager, NetManagerMod.ReleaseNodeImplementationCallback>("ReleaseNodeImplementation", (object)Singleton <NetManager> .instance);
     NetManagerMod._redirection = new Redirection <NetManager, NetManagerMod>("ReleaseNode");
     SerializableDataExtension.instance.EventSaveData += new SerializableDataExtension.SaveDataEventHandler(NetManagerMod.OnSaveData);
     NetManagerMod._isDeployed = true;
 }
        public void ReleaseNode(ushort nodeID)
        {
            Singleton <InstanceManager> .instance.SetName(new InstanceID()
            {
                NetNode = nodeID
            }, (string)null);

            if (!NetManagerMod.m_cachedNodeData[(int)nodeID].IsEmpty)
            {
                NetManagerMod.m_cachedNodeData[(int)nodeID] = new NodeData();
            }
            NetManager instance = Singleton <NetManager> .instance;

            NetManagerMod.PreReleaseNodeImplementation(nodeID, ref instance.m_nodes.m_buffer[(int)nodeID], false, false);
            NetManagerMod.ReleaseNodeImplementation(nodeID, ref instance.m_nodes.m_buffer[(int)nodeID]);
        }
 private void Deinit()
 {
     TramAIMod.Deinit();
     PassengerTrainAIMod.Deinit();
     PassengerShipAIMod.Deinit();
     PassengerPlaneAIMod.Deinit();
     BusAIMod.Deinit();
     TransportLineMod.Deinit();
     BuildingWatcher.instance.Deinit();
     NetManagerMod.Deinit();
     VehicleManagerMod.Deinit();
     VehiclePrefabs.Deinit();
     SerializableDataExtension.instance.Loaded = false;
     LocaleModifier.Deinit();
     if ((UnityEngine.Object) this._iptGameObject != (UnityEngine.Object)null)
     {
         UnityEngine.Object.Destroy((UnityEngine.Object) this._iptGameObject);
     }
     if (!((UnityEngine.Object) this._worldInfoPanel != (UnityEngine.Object)null))
     {
         return;
     }
     UnityEngine.Object.Destroy((UnityEngine.Object) this._worldInfoPanel);
 }