Files
OldThink/Content.Shared/_White/Cult/Systems/CultistWordGeneratorManager.cs

58 lines
1.4 KiB
C#
Raw Permalink Normal View History

using System.Linq;
2026-02-01 14:47:44 +03:00
using System.Text;
2024-01-27 15:19:52 +03:00
using Robust.Shared.Random;
namespace Content.Shared._White.Cult.Systems;
2024-01-27 15:19:52 +03:00
/// <summary>
/// Words generator for whisper
/// </summary>
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();
2024-01-27 15:19:52 +03:00
var wordsAmount = content.Length;
if (wordsAmount <= 0)
return "";
for (var i = 0; i < wordsAmount; i++)
{
content[i] = GenerateWord(content[i].Length);
2024-01-27 15:19:52 +03:00
}
return string.Join(" ", content);
2024-01-27 15:19:52 +03:00
}
private string GenerateWord(int length)
{
if (length <= 0)
throw new ArgumentException("Word length must be greater than zero.");
2026-02-01 14:47:44 +03:00
var word = new StringBuilder();
2024-01-27 15:19:52 +03:00
for (var i = 0; i < length; i++)
{
var isVowel = (i % 2 == 0); // Alternate between vowels and consonants
var randomChar = GetRandomChar(isVowel ? Vowels : Consonants);
2026-02-01 14:47:44 +03:00
word.Append(randomChar);
2024-01-27 15:19:52 +03:00
}
2026-02-01 14:47:44 +03:00
return word.ToString();
2024-01-27 15:19:52 +03:00
}
private char GetRandomChar(string characters)
{
var index = _random.Next(characters.Length);
return characters[index];
}
}