From 3526564c82456cc2ff586b10644083fe4e55f537 Mon Sep 17 00:00:00 2001 From: Theodore Lukin <66275205+pheenty@users.noreply.github.com> Date: Fri, 1 Nov 2024 23:59:14 +0700 Subject: [PATCH] Night vision toggling (#151) * nv toggling * sound and fixes * playsound parameter * sound tweaks * less variables --- .../Stories/Nightvision/NightvisionSystem.cs | 12 ++++++++++ .../Nightvision/NightvisionComponent.cs | 11 ++++++++- .../Nightvision/SharedNightvisionSystem.cs | 22 ++++++++++++++++++ Resources/Audio/Stories/Misc/attributions.yml | 5 ++++ Resources/Audio/Stories/Misc/night_vision.ogg | Bin 0 -> 18951 bytes .../Stories/Actions/nightvision.yml | 9 +++++++ 6 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 Content.Shared/Stories/Nightvision/SharedNightvisionSystem.cs create mode 100644 Resources/Audio/Stories/Misc/night_vision.ogg create mode 100644 Resources/Prototypes/Stories/Actions/nightvision.yml diff --git a/Content.Server/Stories/Nightvision/NightvisionSystem.cs b/Content.Server/Stories/Nightvision/NightvisionSystem.cs index 3d91097982..6a0ae66489 100644 --- a/Content.Server/Stories/Nightvision/NightvisionSystem.cs +++ b/Content.Server/Stories/Nightvision/NightvisionSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Actions; using Content.Shared.GameTicking; using Content.Shared.Inventory.Events; using Robust.Shared.Player; @@ -9,11 +10,14 @@ namespace Content.Server.Stories.Nightvision; public sealed class NightvisionSystem : EntitySystem { [Dependency] private readonly IGameTiming _gameTiming = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnEquipped); SubscribeLocalEvent(OnUnequipped); + SubscribeLocalEvent(OnStartUp); + SubscribeLocalEvent(OnShutdown); } private void OnUnequipped(EntityUid uid, NightvisionClothingComponent component, GotUnequippedEvent args) { @@ -28,4 +32,12 @@ private void OnEquipped(EntityUid uid, NightvisionClothingComponent component, G if (component.Enabled && !HasComp(args.Equipee) && (args.Slot == "eyes")) AddComp(args.Equipee); } + private void OnStartUp(EntityUid uid, NightvisionComponent component, ComponentStartup args) + { + _actions.AddAction(uid, ref component.ToggleActionEntity, component.ToggleAction); + } + private void OnShutdown(EntityUid uid, NightvisionComponent component, ComponentShutdown args) + { + Del(component.ToggleActionEntity); + } } diff --git a/Content.Shared/Stories/Nightvision/NightvisionComponent.cs b/Content.Shared/Stories/Nightvision/NightvisionComponent.cs index 2a6003e849..f8ae264f85 100644 --- a/Content.Shared/Stories/Nightvision/NightvisionComponent.cs +++ b/Content.Shared/Stories/Nightvision/NightvisionComponent.cs @@ -1,4 +1,6 @@ +using Content.Shared.Actions; using Content.Shared.Eye.Blinding.Systems; +using Robust.Shared.Audio; using Robust.Shared.GameStates; namespace Content.Shared.Stories.Nightvision; @@ -8,7 +10,13 @@ namespace Content.Shared.Stories.Nightvision; public sealed partial class NightvisionComponent : Component { [ViewVariables(VVAccess.ReadWrite), DataField("enabled"), AutoNetworkedField] - public bool Enabled { get; set; } = true; + public bool Enabled { get; set; } = false; + [DataField] + public string ToggleAction = "ToggleNightvisionAction"; + [DataField, AutoNetworkedField] + public EntityUid? ToggleActionEntity; + [DataField("toggleOnSound")] + public SoundSpecifier? ToggleOnSound = new SoundPathSpecifier("/Audio/Stories/Misc/night_vision.ogg"); } [RegisterComponent] @@ -18,3 +26,4 @@ public sealed partial class NightvisionClothingComponent : Component [ViewVariables(VVAccess.ReadWrite), DataField("enabled")] public bool Enabled { get; set; } = true; } +public sealed partial class ToggleNightvisionEvent : InstantActionEvent { } diff --git a/Content.Shared/Stories/Nightvision/SharedNightvisionSystem.cs b/Content.Shared/Stories/Nightvision/SharedNightvisionSystem.cs new file mode 100644 index 0000000000..1b78c112ef --- /dev/null +++ b/Content.Shared/Stories/Nightvision/SharedNightvisionSystem.cs @@ -0,0 +1,22 @@ +using Robust.Shared.Audio.Systems; +using Robust.Shared.Timing; +namespace Content.Shared.Stories.Nightvision; + +public sealed class SharedNightvisionSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnToggle); + } + private void OnToggle(EntityUid uid, NightvisionComponent component, ToggleNightvisionEvent args) + { + if (!_timing.IsFirstTimePredicted) + return; + component.Enabled = !component.Enabled; + if (component.Enabled && component.ToggleOnSound != null) + _audio.PlayLocal(component.ToggleOnSound, uid, uid); + } +} diff --git a/Resources/Audio/Stories/Misc/attributions.yml b/Resources/Audio/Stories/Misc/attributions.yml index 68c9d3145b..df552d81d0 100644 --- a/Resources/Audio/Stories/Misc/attributions.yml +++ b/Resources/Audio/Stories/Misc/attributions.yml @@ -12,3 +12,8 @@ license: "CC-BY-4.0" copyright: "bobik-music" source: "https://youtu.be/rhABoExfiEM?si=8RjBhIxZ4JqxOltX" + +- files: ["night_vision.ogg"] + license: "CC-BY-4.0" + copyright: "NoahBangs" + source: "https://freesound.org/people/NoahBangs/sounds/636090/" diff --git a/Resources/Audio/Stories/Misc/night_vision.ogg b/Resources/Audio/Stories/Misc/night_vision.ogg new file mode 100644 index 0000000000000000000000000000000000000000..753b1ba4e42fa269d3762e21dff56e40f7674a1b GIT binary patch literal 18951 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 literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/Stories/Actions/nightvision.yml b/Resources/Prototypes/Stories/Actions/nightvision.yml new file mode 100644 index 0000000000..d2b4795b9f --- /dev/null +++ b/Resources/Prototypes/Stories/Actions/nightvision.yml @@ -0,0 +1,9 @@ +- type: entity + id: ToggleNightvisionAction + name: Ночное зрение + description: Переключить своё ночное зрение. + components: + - type: InstantAction + useDelay: 5 + icon: { sprite: Stories/Clothing/Eyes/Glasses/nvg.rsi, state: icon } + event: !type:ToggleNightvisionEvent