2020-09-13 14:23:52 +02:00
|
|
|
|
using System.Text.RegularExpressions;
|
2021-06-09 22:19:39 +02:00
|
|
|
|
using Content.Server.Chat.Managers;
|
|
|
|
|
|
using Content.Server.Speech.Components;
|
2021-02-11 01:13:03 -08:00
|
|
|
|
using Robust.Shared.GameObjects;
|
2020-08-25 17:09:39 +02:00
|
|
|
|
using Robust.Shared.IoC;
|
|
|
|
|
|
|
2021-06-09 22:19:39 +02:00
|
|
|
|
namespace Content.Server.Speech
|
2020-08-25 17:09:39 +02:00
|
|
|
|
{
|
|
|
|
|
|
public interface IAccentManager
|
|
|
|
|
|
{
|
|
|
|
|
|
public void Initialize();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public class AccentManager : IAccentManager
|
|
|
|
|
|
{
|
|
|
|
|
|
[Dependency] private readonly IChatManager _chatManager = default!;
|
|
|
|
|
|
[Dependency] private readonly IComponentManager _componentManager = default!;
|
|
|
|
|
|
|
2020-11-27 11:00:49 +01:00
|
|
|
|
public static readonly Regex SentenceRegex = new(@"(?<=[\.!\?])");
|
2020-08-25 17:09:39 +02:00
|
|
|
|
|
|
|
|
|
|
public void Initialize()
|
|
|
|
|
|
{
|
|
|
|
|
|
IoCManager.InjectDependencies(this);
|
|
|
|
|
|
|
|
|
|
|
|
_chatManager.RegisterChatTransform(AccentHandler);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public string AccentHandler(IEntity player, string message)
|
|
|
|
|
|
{
|
|
|
|
|
|
//TODO: give accents a prio?
|
|
|
|
|
|
var accents = _componentManager.GetComponents<IAccentComponent>(player.Uid);
|
|
|
|
|
|
foreach (var accent in accents)
|
|
|
|
|
|
{
|
|
|
|
|
|
message = accent.Accentuate(message);
|
|
|
|
|
|
}
|
|
|
|
|
|
return message;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|