From daaa7c6de0d21c5b8d9c0b659eb62878a0410d3d Mon Sep 17 00:00:00 2001
From: blueDev2 <89804215+blueDev2@users.noreply.github.com>
Date: Sat, 30 Mar 2024 22:20:44 -0400
Subject: [PATCH] Add new component to Make sound on interact (#26523)
* Adds new Component: EmitSoundOnInteractUsing
* Missed an import
* File-scoping
* Replace ID check with Prototype check
* Moved component and system to shared. Set prediction to true.
* Removed impoper imports and changed namespace of component to reflect changed folder.
* Following function naming theme
* All this code is basically deltanedas's, but it was a learning experience for me
* Update Content.Shared/Sound/Components/EmitSoundOnInteractUsingComponent.cs
* Update Content.Shared/Sound/Components/EmitSoundOnInteractUsingComponent.cs
---------
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
---
.../EmitSoundOnInteractUsingComponent.cs | 15 +++++++++++++++
Content.Shared/Sound/SharedEmitSoundSystem.cs | 8 ++++++++
2 files changed, 23 insertions(+)
create mode 100644 Content.Shared/Sound/Components/EmitSoundOnInteractUsingComponent.cs
diff --git a/Content.Shared/Sound/Components/EmitSoundOnInteractUsingComponent.cs b/Content.Shared/Sound/Components/EmitSoundOnInteractUsingComponent.cs
new file mode 100644
index 0000000000..49118d9799
--- /dev/null
+++ b/Content.Shared/Sound/Components/EmitSoundOnInteractUsingComponent.cs
@@ -0,0 +1,15 @@
+using Content.Shared.Whitelist;
+using Robust.Shared.Prototypes;
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Sound.Components;
+
+///
+/// Whenever this item is used upon by an entity, with a tag or component within a whitelist, in the hand of a user, play a sound
+///
+[RegisterComponent, NetworkedComponent]
+public sealed partial class EmitSoundOnInteractUsingComponent : BaseEmitSoundComponent
+{
+ [DataField(required: true)]
+ public EntityWhitelist Whitelist = new();
+}
diff --git a/Content.Shared/Sound/SharedEmitSoundSystem.cs b/Content.Shared/Sound/SharedEmitSoundSystem.cs
index cd7828fc6b..329626964e 100644
--- a/Content.Shared/Sound/SharedEmitSoundSystem.cs
+++ b/Content.Shared/Sound/SharedEmitSoundSystem.cs
@@ -41,6 +41,7 @@ public abstract class SharedEmitSoundSystem : EntitySystem
SubscribeLocalEvent(OnEmitSoundOnActivateInWorld);
SubscribeLocalEvent(OnEmitSoundOnPickup);
SubscribeLocalEvent(OnEmitSoundOnDrop);
+ SubscribeLocalEvent(OnEmitSoundOnInteractUsing);
SubscribeLocalEvent(OnEmitSoundOnCollide);
}
@@ -102,6 +103,13 @@ public abstract class SharedEmitSoundSystem : EntitySystem
TryEmitSound(uid, component, args.User);
}
+ private void OnEmitSoundOnInteractUsing(Entity ent, ref InteractUsingEvent args)
+ {
+ if (ent.Comp.Whitelist.IsValid(args.Used, EntityManager))
+ {
+ TryEmitSound(ent, ent.Comp, args.User);
+ }
+ }
protected void TryEmitSound(EntityUid uid, BaseEmitSoundComponent component, EntityUid? user=null, bool predict=true)
{
if (component.Sound == null)