//---- Public Methods ----/
    public override void Initialize() {
        base.Initialize();

        cityCamera = FindObjectOfType<CityCamera>();
        city = GetController<City>();
        sharedHUDGuiState = FindObjectOfType<SharedHUDGuiState>();
        gridObject = city.gameObject.FindChildComponentByName<CityGridColorController>("r_GridLines");
    }
    //---- Delegate Handlers ----//
    private void OnTimeButtonClick(SharedHUDGuiState.TimeControl controlType) {
        if (controlType == SharedHUDGuiState.TimeControl.Build) {
            stateManager.SetState<CityBuildModeState>();
            return;
        } 
        
        bool isStatisticMode = stateManager.State.CurrentChild is CityStatisticsState;
        bool isEditMode = stateManager.State.CurrentChild is EditCityObjectState;

        if (isStatisticMode || isEditMode) { return; }

        stateManager.SetState<CityPlayModeState>();
    }