Настройка очереди ТТС в рации (#2465)

Co-authored-by: Vigers Ray <60344369+VigersRay@users.noreply.github.com>
This commit is contained in:
iertis 2025-07-18 03:33:48 +05:00 committed by GitHub
parent 7dfecaaaa0
commit 10065096fc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 19 additions and 2 deletions

View file

@ -24,6 +24,7 @@
<!-- Audio -->
<Label Text="{Loc 'ui-options-sunrise-general-audio'}" StyleClasses="LabelKeyText"/>
<CheckBox Name="TtsClientCheckBox" Text="{Loc 'ui-options-tts-enabled'}" />
<CheckBox Name="TtsClientCheckBoxQueue" Text="{Loc 'ui-options-tts-queue'}" />
<ui:OptionSlider Name="SliderTts" Title="{Loc 'ui-options-tts-volume'}" />
<ui:OptionSlider Name="SliderTtsRadio" Title="{Loc 'ui-options-tts-radio-volume'}" />
<ui:OptionSlider Name="SliderTtsAnnounce" Title="{Loc 'ui-options-tts-announce-volume'}" />

View file

@ -38,6 +38,7 @@ public sealed partial class ExtraTab : Control
scale: ContentAudioSystem.TtsMultiplier);
Control.AddOptionCheckBox(SunriseCCVars.TTSClientEnabled, TtsClientCheckBox);
Control.AddOptionCheckBox(SunriseCCVars.TTSClientQueueEnabled, TtsClientCheckBoxQueue);
Control.AddOptionCheckBox(SunriseCCVars.TapePlayerClientEnabled, TapePlayerClientCheckBox);
Control.AddOptionCheckBox(SunriseCCVars.JumpSoundDisable, JumpSoundDisableCheckBox);
Control.AddOptionCheckBox(SunriseCCVars.VoteMusicDisable, VoteMusicDisableCheckBox);

View file

@ -1,7 +1,9 @@
using Content.Shared._Sunrise.SunriseCCVars;
using Content.Shared._Sunrise.TTS;
using Content.Shared.CCVar;
using Robust.Client.Audio;
using Robust.Client.ResourceManagement;
using Robust.Shared;
using Robust.Shared.Audio;
using Robust.Shared.Audio.Components;
using Robust.Shared.Audio.Systems;
@ -32,7 +34,7 @@ public sealed class TTSSystem : EntitySystem
private float _radioVolume;
private int _fileIdx;
private float _volumeAnnounce;
private bool _isQueueEnabled;
private readonly Queue<QueuedTts> _ttsQueue = new();
private (EntityUid Entity, AudioComponent Component)? _currentPlaying;
private static readonly AudioResource EmptyAudioResource = new();
@ -59,6 +61,7 @@ public sealed class TTSSystem : EntitySystem
_cfg.OnValueChanged(SunriseCCVars.TTSRadioVolume, OnTtsRadioVolumeChanged, true);
_cfg.OnValueChanged(SunriseCCVars.TTSAnnounceVolume, OnTtsAnnounceVolumeChanged, true);
_cfg.OnValueChanged(SunriseCCVars.TTSClientEnabled, OnTtsClientOptionChanged, true);
_cfg.OnValueChanged(SunriseCCVars.TTSClientQueueEnabled, OnTTSQueueOptionChanged, true);
SubscribeNetworkEvent<PlayTTSEvent>(OnPlayTTS);
SubscribeNetworkEvent<AnnounceTtsEvent>(OnAnnounceTTSPlay);
}
@ -70,6 +73,7 @@ public sealed class TTSSystem : EntitySystem
_cfg.UnsubValueChanged(SunriseCCVars.TTSRadioVolume, OnTtsRadioVolumeChanged);
_cfg.UnsubValueChanged(SunriseCCVars.TTSAnnounceVolume, OnTtsAnnounceVolumeChanged);
_cfg.UnsubValueChanged(SunriseCCVars.TTSClientEnabled, OnTtsClientOptionChanged);
_cfg.UnsubValueChanged(SunriseCCVars.TTSClientQueueEnabled, OnTTSQueueOptionChanged);
ContentRoot.Clear();
_currentPlaying = null;
@ -91,6 +95,10 @@ public sealed class TTSSystem : EntitySystem
_radioVolume = volume;
}
private void OnTTSQueueOptionChanged(bool option)
{
_isQueueEnabled = option;
}
private void OnTtsAnnounceVolumeChanged(float volume)
{
_volumeAnnounce = volume;
@ -150,7 +158,7 @@ public sealed class TTSSystem : EntitySystem
if (volume == 0)
return;
if (ev.IsRadio)
if (ev.IsRadio && _isQueueEnabled)
{
var entry = new QueuedTts(ev.Data, TtsType.Radio);

View file

@ -39,6 +39,12 @@ public sealed partial class SunriseCCVars : CVars
public static readonly CVarDef<bool> TTSClientEnabled =
CVarDef.Create("tts.client_enabled", true, CVar.CLIENTONLY | CVar.ARCHIVE);
/// <summary>
/// Option to disable TTS queue in radio for client
/// </summary>
public static readonly CVarDef<bool> TTSClientQueueEnabled =
CVarDef.Create("tts.queue_enabled", false, CVar.CLIENTONLY | CVar.ARCHIVE);
/// <summary>
/// Default volume setting of TTS sound
/// </summary>

View file

@ -38,6 +38,7 @@ ui-options-event-music = Музыка событий
ui-options-admin-sounds = Музыка админов
ui-options-bwoink-sound = Воспроизводить звук уведомления АХелп
ui-options-tts-enabled = ТТС интеграция
ui-options-tts-queue = Использовать очередь для TTS рации?
ui-options-volume-label = Громкость
ui-options-display-label = Дисплей
ui-options-quality-label = Качество