public IFilteredInput Filter() { if (null == _stateProvider) { return(null); } _stateProvider.ApplyStates(this); var userInput = _userInput as IFilteredInput; foreach (var state in _gameStates) { if (null != state) { state.FilterInput(userInput); } else { Logger.Error("state is null !"); } } return(userInput); }