using Content.Server.GameTicking.Events; using Content.Shared.Audio; using Content.Shared.GameTicking; using Robust.Server.Audio; using Robust.Shared.Audio; using Robust.Shared.Prototypes; namespace Content.Server.Audio; public sealed class ContentAudioSystem : SharedContentAudioSystem { [Dependency] private readonly AudioSystem _serverAudio = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnRoundCleanup); SubscribeLocalEvent(OnRoundStart); SubscribeLocalEvent(OnProtoReload); } private void OnRoundCleanup(RoundRestartCleanupEvent ev) { SilenceAudio(); } private void OnProtoReload(PrototypesReloadedEventArgs obj) { if (obj.WasModified()) _serverAudio.ReloadPresets(); } private void OnRoundStart(RoundStartingEvent ev) { // On cleanup all entities get purged so need to ensure audio presets are still loaded // yeah it's whacky af. _serverAudio.ReloadPresets(); } }