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}]."); }
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}."); }