| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- using Content.Server.Station.Systems;
- using Content.Shared.Audio;
- using Robust.Shared.Audio;
- using Robust.Shared.Audio.Systems;
- using Robust.Shared.Console;
- using Robust.Shared.Player;
- namespace Content.Server.Audio;
- public sealed class ServerGlobalSoundSystem : SharedGlobalSoundSystem
- {
- [Dependency] private readonly IConsoleHost _conHost = default!;
- [Dependency] private readonly StationSystem _stationSystem = default!;
- [Dependency] private readonly SharedAudioSystem _audio = default!;
- public override void Shutdown()
- {
- base.Shutdown();
- _conHost.UnregisterCommand("playglobalsound");
- }
- public void PlayAdminGlobal(Filter playerFilter, ResolvedSoundSpecifier specifier, AudioParams? audioParams = null, bool replay = true)
- {
- var msg = new AdminSoundEvent(specifier, audioParams);
- RaiseNetworkEvent(msg, playerFilter, recordReplay: replay);
- }
- private Filter GetStationAndPvs(EntityUid source)
- {
- var stationFilter = _stationSystem.GetInOwningStation(source);
- stationFilter.AddPlayersByPvs(source, entityManager: EntityManager);
- return stationFilter;
- }
- public void PlayGlobalOnStation(EntityUid source, ResolvedSoundSpecifier specifier, AudioParams? audioParams = null)
- {
- var msg = new GameGlobalSoundEvent(specifier, audioParams);
- var filter = GetStationAndPvs(source);
- RaiseNetworkEvent(msg, filter);
- }
- public void StopStationEventMusic(EntityUid source, StationEventMusicType type)
- {
- // TODO REPLAYS
- // these start & stop events are gonna be a PITA
- // theres probably some nice way of handling them. Maybe it just needs dedicated replay data (in which case these events should NOT get recorded).
- var msg = new StopStationEventMusic(type);
- var filter = GetStationAndPvs(source);
- RaiseNetworkEvent(msg, filter);
- }
- public void DispatchStationEventMusic(EntityUid source, SoundSpecifier sound, StationEventMusicType type)
- {
- DispatchStationEventMusic(source, _audio.ResolveSound(sound), type);
- }
- public void DispatchStationEventMusic(EntityUid source, ResolvedSoundSpecifier specifier, StationEventMusicType type)
- {
- var audio = AudioParams.Default.WithVolume(-8);
- var msg = new StationEventMusicEvent(specifier, type, audio);
- var filter = GetStationAndPvs(source);
- RaiseNetworkEvent(msg, filter);
- }
- }
|