From 14d9a35116ed5a7ddc17debc2985456aebe7439f Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Fri, 18 Apr 2025 23:01:52 +0100 Subject: [PATCH] ciggie sounds (#32426) * add sounds * change _active to BurningComponent * play sound when lighting and snuffing a cigar * network it * mono * attribution * doc --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Nutrition/EntitySystems/SmokingSystem.cs | 35 +++++++----------- .../Nutrition/Components/SmokableComponent.cs | 13 +++++++ Content.Shared/Smoking/BurningComponent.cs | 12 ++++++ Resources/Audio/Effects/attributions.yml | 5 +++ Resources/Audio/Effects/cig_light.ogg | Bin 0 -> 17354 bytes Resources/Audio/Effects/cig_snuff.ogg | Bin 0 -> 9397 bytes 6 files changed, 43 insertions(+), 22 deletions(-) create mode 100644 Content.Shared/Smoking/BurningComponent.cs create mode 100644 Resources/Audio/Effects/cig_light.ogg create mode 100644 Resources/Audio/Effects/cig_snuff.ogg diff --git a/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs b/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs index d2074a3d82..b3ef8bff69 100644 --- a/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs @@ -15,6 +15,7 @@ using Content.Shared.Nutrition.Components; using Content.Shared.Smoking; using Content.Shared.Temperature; using Robust.Server.GameObjects; +using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using System.Linq; using Content.Shared.Atmos; @@ -30,6 +31,7 @@ namespace Content.Server.Nutrition.EntitySystems [Dependency] private readonly TransformSystem _transformSystem = default!; [Dependency] private readonly InventorySystem _inventorySystem = default!; [Dependency] private readonly ClothingSystem _clothing = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedItemSystem _items = default!; [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; @@ -39,11 +41,6 @@ namespace Content.Server.Nutrition.EntitySystems private float _timer; - /// - /// We keep a list of active smokables, because iterating all existing smokables would be dumb. - /// - private readonly HashSet _active = new(); - public override void Initialize() { SubscribeLocalEvent(OnSmokableIsHotEvent); @@ -65,7 +62,7 @@ namespace Content.Server.Nutrition.EntitySystems public void SetSmokableState(EntityUid uid, SmokableState state, SmokableComponent? smokable = null, AppearanceComponent? appearance = null, ClothingComponent? clothing = null) { - if (!Resolve(uid, ref smokable, ref appearance, ref clothing)) + if (!Resolve(uid, ref smokable, ref appearance, ref clothing) || smokable.State == state) return; smokable.State = state; @@ -83,17 +80,17 @@ namespace Content.Server.Nutrition.EntitySystems if (state == SmokableState.Lit) { + EnsureComp(uid); + _audio.PlayPvs(smokable.LightSound, uid); var igniteEvent = new IgnitedEvent(); RaiseLocalEvent(uid, ref igniteEvent); - - _active.Add(uid); } else { - var igniteEvent = new ExtinguishedEvent(); - RaiseLocalEvent(uid, ref igniteEvent); - - _active.Remove(uid); + RemComp(uid); + _audio.PlayPvs(smokable.SnuffSound, uid); + var extinguishEvent = new ExtinguishedEvent(); + RaiseLocalEvent(uid, ref extinguishEvent); } } @@ -104,7 +101,7 @@ namespace Content.Server.Nutrition.EntitySystems private void OnSmokableShutdownEvent(Entity entity, ref ComponentShutdown args) { - _active.Remove(entity); + RemComp(entity); } private void OnSmokeableEquipEvent(Entity entity, ref GotEquippedEvent args) @@ -122,18 +119,12 @@ namespace Content.Server.Nutrition.EntitySystems if (_timer < UpdateTimer) return; - // TODO Use an "active smoke" component instead, EntityQuery over that. - foreach (var uid in _active.ToArray()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out var smokable)) { - if (!TryComp(uid, out SmokableComponent? smokable)) - { - _active.Remove(uid); - continue; - } - if (!_solutionContainerSystem.TryGetSolution(uid, smokable.Solution, out var soln, out var solution)) { - _active.Remove(uid); + SetSmokableState(uid, SmokableState.Unlit, smokable); continue; } diff --git a/Content.Shared/Nutrition/Components/SmokableComponent.cs b/Content.Shared/Nutrition/Components/SmokableComponent.cs index e5cbd27242..28e84dc190 100644 --- a/Content.Shared/Nutrition/Components/SmokableComponent.cs +++ b/Content.Shared/Nutrition/Components/SmokableComponent.cs @@ -1,5 +1,6 @@ using Content.Shared.FixedPoint; using Content.Shared.Smoking; +using Robust.Shared.Audio; using Robust.Shared.GameStates; namespace Content.Shared.Nutrition.Components @@ -32,5 +33,17 @@ namespace Content.Shared.Nutrition.Components public string LitPrefix = "lit"; [DataField("unlitPrefix")] public string UnlitPrefix = "unlit"; + + /// + /// Sound played when lighting this smokable. + /// + [DataField] + public SoundSpecifier? LightSound = new SoundPathSpecifier("/Audio/Effects/cig_light.ogg"); + + /// + /// Sound played when this smokable is extinguished or runs out. + /// + [DataField] + public SoundSpecifier? SnuffSound = new SoundPathSpecifier("/Audio/Effects/cig_snuff.ogg"); } } diff --git a/Content.Shared/Smoking/BurningComponent.cs b/Content.Shared/Smoking/BurningComponent.cs new file mode 100644 index 0000000000..bbb9765174 --- /dev/null +++ b/Content.Shared/Smoking/BurningComponent.cs @@ -0,0 +1,12 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Smoking; + +/// +/// Marker component used to track active burning objects. +/// +/// +/// Right now only smoking uses this, but flammable could use it as well in the future. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class BurningComponent : Component; diff --git a/Resources/Audio/Effects/attributions.yml b/Resources/Audio/Effects/attributions.yml index add8884a7d..9cfaa54122 100644 --- a/Resources/Audio/Effects/attributions.yml +++ b/Resources/Audio/Effects/attributions.yml @@ -241,3 +241,8 @@ copyright: 'created by Vrymaa on Freesound and modified by Chaboricks' license: "CC0-1.0" source: https://freesound.org/people/Vrymaa/sounds/785128/ + +- files: ["cig_light.ogg", "cig_snuff.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Created by mattroks101 for Bee Station. cig_snuff converted to mono" + source: "https://github.com/BeeStation/BeeStation-Hornet/pull/29" diff --git a/Resources/Audio/Effects/cig_light.ogg b/Resources/Audio/Effects/cig_light.ogg new file mode 100644 index 0000000000000000000000000000000000000000..48aef9c344a427bbf72127bc253ef6e2d0eb68c6 GIT binary patch literal 17354 zcmajG1y~);vM#(9?!hg%FC2oq2Y1(C!3j=qhv4q+?oNVBu;A_lmmtAHko-fwea_zh zx%WADX!_~t>aOaleygXtXO@zMg&GJ7^snn)>YoClh{pq%1nl;~$;8U}r3&o-`Cm=k z!G8;FV5OIy|9!pme4(Vt6Ck5A{rUf0BhddaA_nN%Rt}cTN=_DJwpJ#Zf7z4Ckg>C} zauvK3&lTYNK_&^p$IfKnI6bL4nL( zOhSg3Kmkc8lqq>{U1OEmVp-W@H`c&7)`0T22{4N=FQWnFS!I;`AL+eLiuwOLiC7NP zgG2yZesv`J>PRK2O7+!=5&o}*he5!cil{OUI&r*p=J@I?0Hn7r5+h0S->&6f{nsSC zOgji9!bUXcNHhXiLzQXPiBrp2aM4*|5irGzMgI3I;4fYPMaZ+?r&#+VyoodZYZiZi zEq*?NILbegfCiuPcgZrQGOoVyqGjymm1Ael_J*rx(zchUW&WK(+X;dlU@jq}>4SOc zQyI<^GAJ3v|CBs1GvTYtXMj3_gDkWm0%M?^)l3F_`LZ_9S7$0?zpNb_D1|3w(l)oN z|HJQJuqZdon&{=-26}|AWZJYN8UUqxv#hgkh%a^j6FwrqycsXy4`m0E`NY7PV3U`S zCz80tq9x|B4MU1ZqGP0F%Y&3v322L50{?1G1_A}6|3&eCWq+ak4~mNtBIrly8pqkk z7+|9BKIsbpqxqHqL% zog_5PX%tclc*TEC+y&Jn2J!TNq{&Mn6-;U%O|vtpy%E$<*U)ma(@Aw*Z4EJ4a@}0? z*<6e^!VCSM!1`~`0Rc`E{MRRwOrqGnW(6sVA^tPL|K&N3*k9v`M&haD8mJUz7{C4G zP`cun#*$RwP*B4$n8tCP#Wh#sGMMEwpVcs*cQapZG1qJL(P{aY!~Ekmn~Sdh;W;lZ zLctreBb@;AZ_ml2i}}tILn)I$rISG8kzx^^QJ$W2R9=AeKRm}WqBJd{^i#yarx?2M z6sz!ziuMBA(VCNv|7ZGd&w1-a1th?8B%P@K!*hDrh{OSJYG72j`bS5>X~3W^l6e0) z0U%IM9E#lEbwov#X|JsiLkihNUsDuCa=%pwU9DfTf^tt*(J3sez+0o1&o6Y&XeazO1gXj;k@>V!n#& ztCixq`9?tpxLp9Ku8S!?MhkWZY5!uSfc=*hm&RfXr;3Y)iiWw4x`vLMxz3%2)`E{5 zKvh#%#?jDd(OAB*(@62zcF{1?&%i^$HFv3Mxh$EGlZMMjL7?Yiv&dYE4;117k%6V`W3tLj~hW zOIbxn^=Ly~W=-Wu%Q;QhD4_-qB%y(&0GX zVnk*$aDLLk(&S36qT#xpWU!+J=wWB%o}+gc(qPBmUHvc$FqrwpJNbdA z9q86*{~D+px?&JE=7}k`$N)xKQJq;)dD39d&|h^TrlR3vkZiumZJ>i^zsVh=w-{Ye zaoj;a)&&S+TO0a7^qG~&V3i9XWH(eJ`jAx_$?4mm#X?cBN+)}kPOjRmj)e!< zs7O9J1C&1x7z9UtfUSm3KS<_+u6j&Xq|OFM?yM*~NR*^3YfYXsM?XZS9wRfHm53>8 z2}zn!h0iZmmbJ-GT2QsAFPSs>K~{t-YsHi_qibD0G^ZPdVT#UvP-HeCgIL`3LI7AD z)Ep{5CJ`kF!f|0L)dC| zOhXxzLu3G}kr&~AW$dLT0j$!45@cnolM__Ovl3re1;xn9Kw1)H<$+Pj%GQUd>e{j` zWU1P60;2+0CCJ(`4e9F1H@l+iBL5v#b+e|8b@dP+oVplaPPV=o*T$Z0pHSAS`bBv8 zAg*2vAY9Fcvt+^gg`j6AxRBv2TfH!+8VwLk?KV%9Hy3;r>J)+n+FKxM#ych(cF)oTg-8{hyfebG2B2X9O%F#0o zYT7^`fEG+Z-0|0K;S|CL!APh&h#(2Ti-*X7bq9{17(ZwVzX;nDouU{Yn3rN~Q^2

?NpLB5ip>C){%E8CMay7WG?FL^ccbN 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 UJgAsr|D&==u<2?UgogJ20YH53*#H0l literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/cig_snuff.ogg b/Resources/Audio/Effects/cig_snuff.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b97cd5c42652088fb7fe5d560c70cca8235ef464 GIT binary patch literal 9397 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 J?n`-`{|CX=3P%6{ literal 0 HcmV?d00001