using System.Linq; using System.Text; using Robust.Shared.Random; namespace Content.Shared._White.Cult.Systems; /// /// Words generator for whisper /// public sealed class CultistWordGeneratorManager { private const string Vowels = "aeiou"; private const string Consonants = "bcdfghjklmnpqrstvwxyz"; [Dependency] private readonly IRobustRandom _random = default!; public string GenerateText(string text) { var content = text.Split(' ').Where(x => x.Length > 0).ToArray(); var wordsAmount = content.Length; if (wordsAmount <= 0) return ""; for (var i = 0; i < wordsAmount; i++) { content[i] = GenerateWord(content[i].Length); } return string.Join(" ", content); } private string GenerateWord(int length) { if (length <= 0) throw new ArgumentException("Word length must be greater than zero."); var word = new StringBuilder(); for (var i = 0; i < length; i++) { var isVowel = (i % 2 == 0); // Alternate between vowels and consonants var randomChar = GetRandomChar(isVowel ? Vowels : Consonants); word.Append(randomChar); } return word.ToString(); } private char GetRandomChar(string characters) { var index = _random.Next(characters.Length); return characters[index]; } }