diff --git a/Content.Client/Entry/IgnoredComponents.cs b/Content.Client/Entry/IgnoredComponents.cs index 90eb8ac7f0..f4fcac686c 100644 --- a/Content.Client/Entry/IgnoredComponents.cs +++ b/Content.Client/Entry/IgnoredComponents.cs @@ -23,6 +23,7 @@ namespace Content.Client.Entry "EmitSoundOnLand", "EmitSoundOnTrigger", "EmitSoundOnActivate", + "EmitSoundOnUIOpen", "NameIdentifier", "HeatResistance", "EntityStorage", diff --git a/Content.Server/Research/Components/ResearchConsoleComponent.cs b/Content.Server/Research/Components/ResearchConsoleComponent.cs index 0849e27d3a..d16de2d2ec 100644 --- a/Content.Server/Research/Components/ResearchConsoleComponent.cs +++ b/Content.Server/Research/Components/ResearchConsoleComponent.cs @@ -17,9 +17,6 @@ namespace Content.Server.Research.Components [Dependency] private readonly IEntityManager _entMan = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [DataField("sound")] - private SoundSpecifier _soundCollectionName = new SoundCollectionSpecifier("keyboard"); - [ViewVariables] private bool Powered => !_entMan.TryGetComponent(Owner, out ApcPowerReceiverComponent? receiver) || receiver.Powered; [ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(ResearchConsoleUiKey.Key); @@ -92,19 +89,5 @@ namespace Content.Server.Research.Components return new ResearchConsoleBoundInterfaceState(points, pointsPerSecond); } - - /// - /// Open the user interface on a certain player session. - /// - /// Session where the UI will be shown - public void OpenUserInterface(IPlayerSession session) - { - UserInterface?.Open(session); - } - - public void PlayKeyboardSound() - { - SoundSystem.Play(Filter.Pvs(Owner), _soundCollectionName.GetSound(), Owner, AudioParams.Default); - } } } diff --git a/Content.Server/Research/ResearchSystem.cs b/Content.Server/Research/ResearchSystem.cs index 343fb7fc46..bef59d439c 100644 --- a/Content.Server/Research/ResearchSystem.cs +++ b/Content.Server/Research/ResearchSystem.cs @@ -1,8 +1,6 @@ -using Content.Server.UserInterface; using Content.Server.Research.Components; using JetBrains.Annotations; - namespace Content.Server.Research { [UsedImplicitly] @@ -17,12 +15,6 @@ namespace Content.Server.Research public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnAfterUIOpen); - } - - private void OnAfterUIOpen(EntityUid uid, ResearchConsoleComponent component, AfterActivatableUIOpenEvent args) - { - component.PlayKeyboardSound(); } public bool RegisterServer(ResearchServerComponent server) diff --git a/Content.Server/Sound/Components/EmitSoundOnUIOpenComponent.cs b/Content.Server/Sound/Components/EmitSoundOnUIOpenComponent.cs new file mode 100644 index 0000000000..654ba96415 --- /dev/null +++ b/Content.Server/Sound/Components/EmitSoundOnUIOpenComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Server.Sound.Components +{ + /// + /// Simple sound emitter that emits sound on AfterActivatableUIOpenEvent + /// + [RegisterComponent] + public sealed class EmitSoundOnUIOpenComponent : BaseEmitSoundComponent + { + } +} diff --git a/Content.Server/Sound/EmitSoundSystem.cs b/Content.Server/Sound/EmitSoundSystem.cs index f4a1b610de..8562a99bf8 100644 --- a/Content.Server/Sound/EmitSoundSystem.cs +++ b/Content.Server/Sound/EmitSoundSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Explosion.EntitySystems; using Content.Server.Interaction.Components; using Content.Server.Sound.Components; using Content.Server.Throwing; +using Content.Server.UserInterface; using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Throwing; @@ -29,6 +30,7 @@ namespace Content.Server.Sound SubscribeLocalEvent(HandleEmitSoundOnThrown); SubscribeLocalEvent(HandleEmitSoundOnActivateInWorld); SubscribeLocalEvent(HandleEmitSoundOnTrigger); + SubscribeLocalEvent(HandleEmitSoundOnUIOpen); } private void HandleEmitSoundOnTrigger(EntityUid uid, EmitSoundOnTriggerComponent component, TriggerEvent args) @@ -64,6 +66,11 @@ namespace Content.Server.Sound arg.Handled = true; } + private void HandleEmitSoundOnUIOpen(EntityUid eUI, BaseEmitSoundComponent component, AfterActivatableUIOpenEvent arg) + { + TryEmitSound(component); + } + private void TryEmitSound(BaseEmitSoundComponent component) { var audioParams = component.AudioParams.WithPitchScale((float) _random.NextGaussian(1, component.PitchVariation)); diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml index 0a7e968183..69c555d729 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml @@ -41,3 +41,6 @@ autoRot: true offset: "0, 0.4" # shine from the top, not bottom of the computer castShadows: false + - type: EmitSoundOnUIOpen + sound: + collection: Keyboard diff --git a/Resources/Prototypes/SoundCollections/keyboard.yml b/Resources/Prototypes/SoundCollections/keyboard.yml index be077bc8fd..46e82d84a1 100644 --- a/Resources/Prototypes/SoundCollections/keyboard.yml +++ b/Resources/Prototypes/SoundCollections/keyboard.yml @@ -1,5 +1,5 @@ - type: soundCollection - id: keyboard + id: Keyboard files: - /Audio/Machines/Keyboard/keyboard1.ogg - /Audio/Machines/Keyboard/keyboard2.ogg