private void Start()
    {
        _transportRouteManager = FindObjectOfType <GameHandler>().TransportRouteManager;
        _userNotificationView  = FindObjectOfType <UserNotificationView>();
        vehicleChoiceSubView.Initialize();
        vehicleChoiceSubView.OnVehicleSelect += transportVehicleData => _routeToggle.interactable = transportVehicleData;
        SettingController.Initialize();
        _stationManager.RouteCreationView = this;

        _showButton.onClick.AddListener(delegate { SetVisible(true); });
        _exitButton.onClick.AddListener(delegate
        {
            SetVisible(false);
            Reset();
        });

        _routeToggle.onValueChanged.AddListener(delegate(bool value)
        {
            vehicleChoiceSubView.VehicleChoiceVisibleGameObject.SetActive(!value);
            _stationManager.RouteElementVisibleGameObject.SetActive(value);
            if (value)
            {
                TransportVehicleData transportVehicleData = vehicleChoiceSubView.SelectedTransportVehicleData;
                SettingController.OnShow(transportVehicleData != null ? transportVehicleData.MaxCapacity : -1);
            }
            else
            {
                SettingController.Reset();
            }
        });
        _createButton.onClick.AddListener(CreateRoute);
        _applyButton.onClick.AddListener(SaveRouteChanges);
    }
    private void Start()
    {
        _progressionManager = new ProgressionManager();
        _vehicleManager     = new VehicleManager();
        if (_gameSettings == null)
        {
            _gameSettings = Resources.Load <GameSettings>(Util.PathTo("GameSettings"));
        }
        _threadedDataRequester = new ThreadedDataRequester();

        // Terrain Generator
        MeshSettings      meshSettings      = Resources.Load <MeshSettings>(Util.PathTo("MeshSettings"));
        HeightMapSettings heightMapSettings = Resources.Load <HeightMapSettings>(Util.PathTo("HeightMapSettings"));
        Material          terrainMaterial   = Resources.Load <Material>(Util.PathTo("TerrainMeshMaterial"));
        Transform         viewer            = _terrainViewer;

        _terrainGenerator      = new TerrainGenerator(meshSettings, heightMapSettings, viewer, terrainMaterial, _gameSettings.MapSize);
        _buildingManager       = new BuildingManager();
        _placementController   = new PlacementController(_buildingManager, _terrainGenerator);
        _cityCityManager       = new CityManager(_placementController, heightMapSettings.noiseSettings.seed);
        _treeManager           = new TreeManager(_placementController, _terrainGenerator);
        _transportRouteManager = new TransportRouteManager(new PathFinder(_terrainGenerator), _vehicleManager);
    }