Exemplo n.º 1
0
 private void RegisterCustomManagers()
 {
     // TODO represent data dependencies differently
     RegisteredManagers.Add(ExtNodeManager.Instance);
     RegisteredManagers.Add(ExtSegmentManager.Instance);
     RegisteredManagers.Add(ExtSegmentEndManager.Instance);
     RegisteredManagers.Add(GeometryManager.Instance);
     RegisteredManagers.Add(AdvancedParkingManager.Instance);
     RegisteredManagers.Add(CustomSegmentLightsManager.Instance);
     RegisteredManagers.Add(ExtBuildingManager.Instance);
     RegisteredManagers.Add(ExtCitizenInstanceManager.Instance);
     RegisteredManagers.Add(ExtCitizenManager.Instance);
     RegisteredManagers.Add(ExtPathManager.Instance);
     RegisteredManagers.Add(TurnOnRedManager.Instance);
     RegisteredManagers.Add(LaneArrowManager.Instance);
     RegisteredManagers.Add(LaneConnectionManager.Instance);
     RegisteredManagers.Add(OptionsManager.Instance);
     RegisteredManagers.Add(ParkingRestrictionsManager.Instance);
     RegisteredManagers.Add(RoutingManager.Instance);
     RegisteredManagers.Add(SpeedLimitManager.Instance);
     RegisteredManagers.Add(TrafficLightManager.Instance);
     RegisteredManagers.Add(TrafficLightSimulationManager.Instance);
     RegisteredManagers.Add(TrafficMeasurementManager.Instance);
     RegisteredManagers.Add(TrafficPriorityManager.Instance);
     RegisteredManagers.Add(UtilityManager.Instance);
     RegisteredManagers.Add(VehicleRestrictionsManager.Instance);
     RegisteredManagers.Add(ExtVehicleManager.Instance);
     RegisteredManagers.Add(JunctionRestrictionsManager.Instance);             // depends on TurnOnRedManager, TrafficLightManager, TrafficLightSimulationManager
 }
Exemplo n.º 2
0
        internal void Unload()
        {
            try {
                GeometryNotifierDisposable?.Dispose();
                GeometryNotifierDisposable = null;

                CustomPathManager._instance?.OnLevelUnloading();
                foreach (ICustomManager manager in RegisteredManagers.AsEnumerable().Reverse())
                {
                    try {
                        Log.Info($"OnLevelUnloading: {manager.GetType().Name}");
                        manager.OnLevelUnloading();
                    } catch (Exception ex) {
                        ex.LogException(true);
                    }
                }

                try {
                    Flags.OnLevelUnloading();
                }
                catch (Exception ex) {
                    ex.LogException(true);
                }

                GlobalConfig.OnLevelUnloading();

                // destroy immidately to prevent duplicates after hot-reload.
                var uiviewGO = UIView.GetAView().gameObject;
                DestroyImmediate(uiviewGO.GetComponent <RoadSelectionPanels>());
                DestroyImmediate(uiviewGO.GetComponent <RemoveVehicleButtonExtender>());
                DestroyImmediate(uiviewGO.GetComponent <RemoveCitizenInstanceButtonExtender>());
                DestroyImmediate(uiviewGO.GetComponent <RemoveCitizenInstanceButtonExtender>());
                DestroyImmediate(uiviewGO.GetComponent <UITransportDemand>());

                Log.Info("Removing Controls from UI.");
                if (ModUI.Instance)
                {
                    ModUI.Instance.CloseMainMenu(); // Hide the UI ASAP
                    ModUI.Instance.Destroy();
                    Log._Debug("removed UIBase instance.");
                }
            } catch (Exception ex) {
                ex.LogException(true);
            }

            Patcher.Uninstall();

            IsGameLoaded    = false;
            InGameHotReload = false;
        }