public async Task Pipe(IncomingMessage message, PlayerInfo info, T data, Func <Task> next) { data.ControllersStack ??= new List <string>(new[] { _mainControllerName }); string realControllerName = data.ControllersStack?.LastOrDefault() ?? _mainControllerName; ControllerBase <T> controller = _controllersProvider.ResolveControllerByName(realControllerName); IControllerAnswer answer = await controller.ProcessMessage(message, info, data); await ProcessAnswer(answer, data, info); }
// ReSharper disable once UnusedParameter.Local private async Task ProcessAnswer(IControllerAnswer answer, T data, PlayerInfo info) { await _gameCommunicator.Answer(new GameAnswer { PlayerId = info.Key, Suggestions = answer .Suggestions .Select(a => a.GetSuggestion(_localizer, info.Locale)) .ToArray(), Text = answer.Text }); }