diff --git a/Content.Client/Corvax/TTS/LobbyUIController.TTS.cs b/Content.Client/Corvax/TTS/LobbyUIController.TTS.cs index f59cf353b2..3612a45ab8 100644 --- a/Content.Client/Corvax/TTS/LobbyUIController.TTS.cs +++ b/Content.Client/Corvax/TTS/LobbyUIController.TTS.cs @@ -1,37 +1,18 @@ using Content.Client.Corvax.TTS; using Robust.Client.UserInterface; -using Robust.Shared.Random; namespace Content.Client.Lobby; public sealed partial class LobbyUIController { - [Dependency] private readonly IRobustRandom _rng = default!; [UISystemDependency] private readonly TTSSystem _tts = default!; - private readonly List _sampleText = - new() - { - "Съешь же ещё этих мягких французских булок, да выпей чаю.", - "Клоун, прекрати разбрасывать банановые кожурки офицерам под ноги!", - "Капитан, вы уверены что хотите назначить клоуна на должность главы персонала?", - "Эс Бэ! Тут человек в сером костюме, с тулбоксом и в маске! Помогите!!", - "Учёные, тут странная аномалия в баре! Она уже съела мима!", - "Я надеюсь что инженеры внимательно следят за сингулярностью...", - "Вы слышали эти странные крики в техах? Мне кажется туда ходить небезопасно.", - "Вы не видели Гамлета? Мне кажется он забегал к вам на кухню.", - "Здесь есть доктор? Человек умирает от отравленного пончика! Нужна помощь!", - "Вам нужно согласие и печать квартирмейстера, если вы хотите сделать заказ на партию дробовиков.", - "Возле эвакуационного шаттла разгерметизация! Инженеры, нам срочно нужна ваша помощь!", - "Бармен, налей мне самого крепкого вина, которое есть в твоих запасах!" - }; - public void PlayTTS() { // Test moment if (_profile == null || _stateManager.CurrentState is not LobbyState) return; - _tts.RequestGlobalTTS(_rng.Pick(_sampleText), _profile.Voice); + _tts.RequestPreviewTTS(_profile.Voice); } } diff --git a/Content.Client/Corvax/TTS/TTSSystem.cs b/Content.Client/Corvax/TTS/TTSSystem.cs index da0a58e15c..b31ba16d62 100644 --- a/Content.Client/Corvax/TTS/TTSSystem.cs +++ b/Content.Client/Corvax/TTS/TTSSystem.cs @@ -53,9 +53,9 @@ public sealed class TTSSystem : EntitySystem _contentRoot.Dispose(); } - public void RequestGlobalTTS(string text, string voiceId) + public void RequestPreviewTTS(string voiceId) { - RaiseNetworkEvent(new RequestGlobalTTSEvent(text, voiceId)); + RaiseNetworkEvent(new RequestPreviewTTSEvent(voiceId)); } private void OnTtsVolumeChanged(float volume) diff --git a/Content.Server/Corvax/TTS/TTSSystem.cs b/Content.Server/Corvax/TTS/TTSSystem.cs index cb52ba27c9..81caf95b09 100644 --- a/Content.Server/Corvax/TTS/TTSSystem.cs +++ b/Content.Server/Corvax/TTS/TTSSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.GameTicking; using Robust.Shared.Configuration; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Robust.Shared.Random; namespace Content.Server.Corvax.TTS; @@ -16,6 +17,24 @@ public sealed partial class TTSSystem : EntitySystem [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly TTSManager _ttsManager = default!; [Dependency] private readonly SharedTransformSystem _xforms = default!; + [Dependency] private readonly IRobustRandom _rng = default!; + + private readonly List _sampleText = + new() + { + "Съешь же ещё этих мягких французских булок, да выпей чаю.", + "Клоун, прекрати разбрасывать банановые кожурки офицерам под ноги!", + "Капитан, вы уверены что хотите назначить клоуна на должность главы персонала?", + "Эс Бэ! Тут человек в сером костюме, с тулбоксом и в маске! Помогите!!", + "Учёные, тут странная аномалия в баре! Она уже съела мима!", + "Я надеюсь что инженеры внимательно следят за сингулярностью...", + "Вы слышали эти странные крики в техах? Мне кажется туда ходить небезопасно.", + "Вы не видели Гамлета? Мне кажется он забегал к вам на кухню.", + "Здесь есть доктор? Человек умирает от отравленного пончика! Нужна помощь!", + "Вам нужно согласие и печать квартирмейстера, если вы хотите сделать заказ на партию дробовиков.", + "Возле эвакуационного шаттла разгерметизация! Инженеры, нам срочно нужна ваша помощь!", + "Бармен, налей мне самого крепкого вина, которое есть в твоих запасах!" + }; private const int MaxMessageChars = 100 * 2; // same as SingleBubbleCharLimit * 2 private bool _isEnabled = false; @@ -28,7 +47,7 @@ public sealed partial class TTSSystem : EntitySystem SubscribeLocalEvent(OnEntitySpoke); SubscribeLocalEvent(OnRoundRestartCleanup); - SubscribeNetworkEvent(OnRequestGlobalTTS); + SubscribeNetworkEvent(OnRequestPreviewTTS); } private void OnRoundRestartCleanup(RoundRestartCleanupEvent ev) @@ -36,14 +55,14 @@ public sealed partial class TTSSystem : EntitySystem _ttsManager.ResetCache(); } - private async void OnRequestGlobalTTS(RequestGlobalTTSEvent ev, EntitySessionEventArgs args) + private async void OnRequestPreviewTTS(RequestPreviewTTSEvent ev, EntitySessionEventArgs args) { if (!_isEnabled || - ev.Text.Length > MaxMessageChars || !_prototypeManager.TryIndex(ev.VoiceId, out var protoVoice)) return; - var soundData = await GenerateTTS(ev.Text, protoVoice.Speaker); + var previewText = _rng.Pick(_sampleText); + var soundData = await GenerateTTS(previewText, protoVoice.Speaker); if (soundData is null) return; diff --git a/Content.Shared/Corvax/TTS/RequestGlobalTTSEvent.cs b/Content.Shared/Corvax/TTS/RequestGlobalTTSEvent.cs deleted file mode 100644 index 48a1ca5ca2..0000000000 --- a/Content.Shared/Corvax/TTS/RequestGlobalTTSEvent.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Robust.Shared.Serialization; - -namespace Content.Shared.Corvax.TTS; - -// ReSharper disable once InconsistentNaming -[Serializable, NetSerializable] -public sealed class RequestGlobalTTSEvent : EntityEventArgs -{ - public string Text { get; } - public string VoiceId { get; } - - public RequestGlobalTTSEvent(string text, string voiceId) - { - Text = text; - VoiceId = voiceId; - } -} diff --git a/Content.Shared/Corvax/TTS/RequestPreviewTTSEvent.cs b/Content.Shared/Corvax/TTS/RequestPreviewTTSEvent.cs new file mode 100644 index 0000000000..c81e4acaa6 --- /dev/null +++ b/Content.Shared/Corvax/TTS/RequestPreviewTTSEvent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Corvax.TTS; + +// ReSharper disable once InconsistentNaming +[Serializable, NetSerializable] +public sealed class RequestPreviewTTSEvent(string voiceId) : EntityEventArgs +{ + public string VoiceId { get; } = voiceId; +}