示例#1
0
        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));
        }
示例#2
0
        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));
        }