42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
using System.Text;
|
||
using Content.Server._Sunrise.Speech.Components;
|
||
using Content.Server.Speech;
|
||
using Content.Server.Speech.Components;
|
||
using Content.Server.Speech.EntitySystems;
|
||
|
||
namespace Content.Server._Sunrise.Speech.EntitySystems;
|
||
|
||
public sealed class UkrainianAccentSystem : EntitySystem
|
||
{
|
||
[Dependency] private readonly ReplacementAccentSystem _replacement = default!;
|
||
public override void Initialize()
|
||
{
|
||
SubscribeLocalEvent<UkrainianAccentComponent, AccentGetEvent>(OnAccent);
|
||
}
|
||
|
||
private string Accentuate(string message)
|
||
{
|
||
var accentedMessage = new StringBuilder(_replacement.ApplyReplacements(message, "ukrainian"));
|
||
|
||
for (var i = 0; i < accentedMessage.Length; i++)
|
||
{
|
||
var c = accentedMessage[i];
|
||
|
||
accentedMessage[i] = c switch
|
||
{
|
||
'и' => 'і',
|
||
'ы' => 'и',
|
||
'ё' => 'ї',
|
||
'е' => 'є',
|
||
_ => accentedMessage[i]
|
||
};
|
||
}
|
||
|
||
return accentedMessage.ToString();
|
||
}
|
||
|
||
private void OnAccent(EntityUid uid, UkrainianAccentComponent component, AccentGetEvent args)
|
||
{
|
||
args.Message = Accentuate(args.Message);
|
||
}
|
||
}
|