1
0

RussianAccentSystem.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System.Text;
  2. using Content.Server.Speech.Components;
  3. namespace Content.Server.Speech.EntitySystems;
  4. public sealed class RussianAccentSystem : EntitySystem
  5. {
  6. [Dependency] private readonly ReplacementAccentSystem _replacement = default!;
  7. public override void Initialize()
  8. {
  9. SubscribeLocalEvent<RussianAccentComponent, AccentGetEvent>(OnAccent);
  10. }
  11. public string Accentuate(string message)
  12. {
  13. var accentedMessage = new StringBuilder(_replacement.ApplyReplacements(message, "russian"));
  14. for (var i = 0; i < accentedMessage.Length; i++)
  15. {
  16. var c = accentedMessage[i];
  17. accentedMessage[i] = c switch
  18. {
  19. 'A' => 'Д',
  20. 'b' => 'в',
  21. 'N' => 'И',
  22. 'n' => 'и',
  23. 'K' => 'К',
  24. 'k' => 'к',
  25. 'm' => 'м',
  26. 'h' => 'н',
  27. 't' => 'т',
  28. 'R' => 'Я',
  29. 'r' => 'я',
  30. 'Y' => 'У',
  31. 'W' => 'Ш',
  32. 'w' => 'ш',
  33. _ => accentedMessage[i]
  34. };
  35. }
  36. return accentedMessage.ToString();
  37. }
  38. private void OnAccent(EntityUid uid, RussianAccentComponent component, AccentGetEvent args)
  39. {
  40. args.Message = Accentuate(args.Message);
  41. }
  42. }