32 lines
1.1 KiB
C#
32 lines
1.1 KiB
C#
|
|
using Content.Client.Gameplay;
|
||
|
|
using Content.Client.Launcher;
|
||
|
|
using Robust.Client.Audio;
|
||
|
|
using Robust.Client.ResourceManagement;
|
||
|
|
using Robust.Client.State;
|
||
|
|
|
||
|
|
namespace Content.Client._Amour.Fart;
|
||
|
|
|
||
|
|
public sealed class FartSystem : EntitySystem
|
||
|
|
{
|
||
|
|
[Dependency] private readonly IStateManager _stateManager = default!;
|
||
|
|
[Dependency] private readonly IAudioManager _audioManager = default!;
|
||
|
|
[Dependency] private readonly IResourceCache _resourceCache = default!;
|
||
|
|
|
||
|
|
public const string FartPath = "/Audio/_Amour/fart-with-reverb.ogg";
|
||
|
|
private AudioResource _audioResource = default!;
|
||
|
|
|
||
|
|
public override void Initialize()
|
||
|
|
{
|
||
|
|
_audioResource = _resourceCache.GetResource<AudioResource>(FartPath);
|
||
|
|
_stateManager.OnStateChanged += StateManagerOnOnStateChanged;
|
||
|
|
}
|
||
|
|
|
||
|
|
private void StateManagerOnOnStateChanged(StateChangedEventArgs obj)
|
||
|
|
{
|
||
|
|
if(obj.OldState is not GameplayState || obj.NewState is not LauncherConnecting)
|
||
|
|
return;
|
||
|
|
|
||
|
|
_audioManager.CreateAudioSource(_audioResource.AudioStream)?.StartPlaying();
|
||
|
|
}
|
||
|
|
}
|