Example #1
0
        public static string ReadHint(SessionState state, ISoundEngine soundEngine)
        {
            string firstLetter = state.CurrentWord.Word.First().ToString().ToUpper();
            string lastLetter  = state.CurrentWord.Word.Last().ToString().ToUpper();

            var hiddenWord =
                $"{firstLetter}{string.Join("", Enumerable.Repeat("-", state.CurrentWord.Word.Length - 2))}{lastLetter}";

            var letterStartText = GetLetterTts(firstLetter);
            var letterEndText   = GetLetterTts(lastLetter);
            var letterCount     = state.CurrentWord.Word.Length.ToPhrase("буква", "буквы", "букв");

            return($"{soundEngine.GetPause(500)}\n" +
                   $"[screen|{hiddenWord} ({letterCount})]" +
                   $"[voice|Всего {letterCount}, первая {letterStartText}, последняя {letterEndText}].");
        }
Example #2
0
        public static string ReadWord(SessionState state, ISoundEngine soundEngine, ReadMode readMode = ReadMode.Normal, bool disableName = false)
        {
            string infix;

            if (state.Players.Length == 1)
            {
                infix = readMode switch
                {
                    ReadMode.Normal => InfixesSingle.PickRandom(),
                    ReadMode.First => "первое задание",
                    ReadMode.Repeat => "повторяю задание",
                    ReadMode.Continue => InfixesSingle.PickRandom(),
                    _ => throw new ArgumentOutOfRangeException(nameof(readMode), readMode, null)
                };
            }
            else
            {
                if (readMode != ReadMode.Normal)
                {
                    string prefix = readMode switch
                    {
                        ReadMode.First => "первое",
                        ReadMode.Repeat => "повторяю",
                        ReadMode.Continue => "",
                        _ => throw new ArgumentOutOfRangeException(nameof(readMode), readMode, null)
                    };

                    infix = $"{prefix} {InfixesFirst.PickRandom()}";
                }
                else
                {
                    infix = InfixesNext.PickRandom();
                }
            }

            string firstLetter = state.CurrentWord.Word.First().ToString().ToUpper();
            var    letterText  = $"{LetterPrefixes.PickRandom()} {soundEngine.GetLetterPronounce(firstLetter, GetLetterTts(firstLetter))}";
            string nameText    = state.Players.Length == 1 || disableName?infix.ToUpperFirst() : $"{state.CurrentPlayer.Name}, {infix}";

            return($"{nameText}: {soundEngine.GetPause(500)}\n{soundEngine.GetNextWordSound()}" +
                   $"{state.CurrentWord.Definition.ToUpperFirst()}, {letterText}.");
        }