private AliceResponse Score(AliceRequest request) { Phrase phrase; SessionState state = request.State.Session; if (request.State.Session.Step == SessionStep.Game) { phrase = new Phrase( GameplayService.ReadScoreOnDemand(state, false) + GameplayService.ReadWordsLeft(state) + GameplayService.ReadWord(request.State.Session, _soundEngine, ReadMode.Repeat, true), _ingameButtons ); } else { return(Repeat(request)); } return(phrase.Generate(request)); }
private AliceResponse Answer(AliceRequest request) { SessionState state = request.State.Session; string word = state.CurrentWord.Word; string wordSaid = string.Join("", request.Request.Nlu.Tokens); AnswerResult result = _gameplayService.Answer(request.State.User, request.State.Session, wordSaid); string sound = result == AnswerResult.Right ? "[audio|dialogs-upload/008dafcd-99bc-4fd1-9561-4686c375eec6/7fbd83e1-7c22-468d-a8fe-8f0439000fd6.opus]" : "[audio|dialogs-upload/008dafcd-99bc-4fd1-9561-4686c375eec6/ac858f28-3c34-403c-81c7-5d64449e4ea7.opus]"; string prefix = sound; if (result == AnswerResult.SeccondAttempt) { return(Hint(request, prefix)); } if (result == AnswerResult.Wrong) { prefix += request.HasScreen() ? $"Правильный ответ: {word.ToUpper()}.\n\n[p|300]" : $"Твой ответ: {wordSaid.ToUpper()}, а правильный: {word.ToUpper()}.\n\n[p|300]"; } var phrase = new Phrase(prefix); if (state.CurrentWord == null) { // game finished phrase += new Phrase( "[audio|alice-sounds-game-win-3.opus]Игра завершена!\n" + $"{GameplayService.ReadScore(request.State.User, state)}\n\nХочешь начать новую игру?", _yesNoButtons ); return(phrase.Generate(request)); } // continue game if (state.NeedShowScore()) { _gameplayService.SetScoreShown(state); // continue game read score phrase += new Phrase( GameplayService.ReadScoreOnDemand(state, state.LeftShown), _ingameButtons ); // read left words if (!state.LeftShown) { _gameplayService.SetLeftShown(state); phrase += new Phrase(GameplayService.ReadWordsLeft(state)); } // read word phrase += new Phrase(GameplayService.ReadWord(request.State.Session, _soundEngine, ReadMode.Normal, true)); } else { // just continue game phrase += new Phrase( GameplayService.ReadWord(request.State.Session, _soundEngine), _ingameButtons ); } return(phrase.Generate(request)); }