private void Initialize(ICommandDispatcher commandDispatcher, LoadSceneCommandFactory loadSceneCommandFactory)
    {
        _commandDispatcher       = commandDispatcher;
        _loadSceneCommandFactory = loadSceneCommandFactory;

        _commandDispatcher.ExecuteCommand(_loadSceneCommandFactory.Create(Constants.MainMenuSceneIndex, false, true));
    }
    public void Initialize(ILocalizationManager localizationManager,
                           ICommandDispatcher commandDispatcher,
                           LoadSceneCommandFactory loadSceneCommandFactory,
                           IInputManager inputManager,
                           SetGamePausedCommandFactory setGamePausedCommandFactory,
                           SignalBus signalBus)
    {
        _localizationManager         = localizationManager;
        _commandDispatcher           = commandDispatcher;
        _loadSceneCommandFactory     = loadSceneCommandFactory;
        _inputManager                = inputManager;
        _setGamePausedCommandFactory = setGamePausedCommandFactory;
        _signalBus = signalBus;

        _resumeGameButton.onClick.AddListener(() => _commandDispatcher.ExecuteCommand(_setGamePausedCommandFactory.Create(false)));
        //TODO: Add confirmation menu
        _restartGameButton.onClick.AddListener(() => _commandDispatcher.ExecuteCommand(_loadSceneCommandFactory.Create(Constants.SinglePlayerSceneIndex, true, true, Constants.SinglePlayerSceneIndex)));
        _settingsButton.onClick.AddListener(() => _signalBus.Fire(new SettingsShouldShowChangedSignal {
            ShowSettings = true
        }));
        _mainMenuButton.onClick.AddListener(() => _commandDispatcher.ExecuteCommand(_loadSceneCommandFactory.Create(Constants.MainMenuSceneIndex, false, true, Constants.SinglePlayerSceneIndex)));
        //TODO: Add confirmation menu
        _quitGameButton.onClick.AddListener(() => Application.Quit());

        OnLanguageChanged();
    }
    public void Initialize(ILocalizationManager localizationManager,
                           ICommandDispatcher commandDispatcher,
                           LoadSceneCommandFactory loadSceneCommandFactory,
                           SignalBus signalBus,
                           LogoutUserCommandFactory logoutUserCommandFactory,
                           SettingsContainer settingsContainer)
    {
        _localizationManager     = localizationManager;
        _commandDispatcher       = commandDispatcher;
        _loadSceneCommandFactory = loadSceneCommandFactory;
        _signalBus = signalBus;
        _logoutUserCommandFactory = logoutUserCommandFactory;
        _settingsContainer        = settingsContainer;

        //TODO: Add difficulty selection
        _startSinglePlayerGameButton.onClick.AddListener(() =>
        {
            _commandDispatcher.ExecuteCommand(_loadSceneCommandFactory.Create(Constants.SinglePlayerSceneIndex, false, true, Constants.MainMenuSceneIndex));
            SceneManager.UnloadSceneAsync(Constants.MainMenuSceneIndex);
        });
        _startMultiPlayerGameButton.onClick.AddListener(() =>
        {
            _commandDispatcher.ExecuteCommand(_loadSceneCommandFactory.Create(Constants.MultiPlayerSceneIndex, false, true, Constants.MainMenuSceneIndex));
            SceneManager.UnloadSceneAsync(Constants.MainMenuSceneIndex);
        });
        _openSettingsButton.onClick.AddListener(() =>
        {
            //TODO: Change to command
            _signalBus.Fire(new SettingsShouldShowChangedSignal {
                ShowSettings = true
            });
        });
        //TODO: Make confirmation menu
        _logoutUserButton.onClick.AddListener(() =>
        {
            _commandDispatcher.ExecuteCommand(_logoutUserCommandFactory.Create());
            _commandDispatcher.ExecuteCommand(_loadSceneCommandFactory.Create(Constants.LoginSceneIndex, false, true, Constants.MainMenuSceneIndex));
        });
        _quitGameButton.onClick.AddListener(() => Application.Quit());

        OnLanguageChanged();
    }
    private void Initialize(
        ILocalizationManager localizationManager,
        ICommandDispatcher commandDispatcher,
        RegisterUserCommandFactory registerUserCommandFactory,
        LoginUserCommandFactory loginUserCommandFactory,
        SettingsContainer settingsContainer,
        LoadSceneCommandFactory loadSceneCommandFactory)
    {
        _menuHolder.SetActive(false);

        _localizationManager        = localizationManager;
        _commandDispatcher          = commandDispatcher;
        _registerUserCommandFactory = registerUserCommandFactory;
        _loginUserCommandFactory    = loginUserCommandFactory;
        _settingsContainer          = settingsContainer;
        _loadSceneCommandFactory    = loadSceneCommandFactory;

        _usernameInputField.onValueChanged.AddListener(OnUsernameInputChanged);
        _passwordInputField.onValueChanged.AddListener(OnUserPasswordInputChanged);
        _registerUserButton.onClick.AddListener(OnRegisterUser);
        _loginUserButton.onClick.AddListener(OnLoginUser);

        OnLanguageChanged();

        _username     = _settingsContainer.Settings.Username;
        _userPassword = _settingsContainer.Settings.Password;

        DetermineRegisterLoginButtonsInteractable();

        if (ShouldAttemptAutoLogin())
        {
            OnLoginUser();
        }
        else
        {
            _menuHolder.SetActive(true);
        }
    }