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