From c0145c7c7db19d4f0adf33a2785ae547bf257623 Mon Sep 17 00:00:00 2001 From: Rendo Date: Mon, 7 Jul 2025 17:42:55 +0500 Subject: [PATCH] Effect based audio --- assets/audio/sfx/yuck.mp3.import | 4 ++-- scenes/entities/Zombies/zombie.tscn | 10 +++++++++- scripts/audio/EffectBasedPlayer.cs | 27 ++++++++++++++++++++++++++ scripts/audio/EffectBasedPlayer.cs.uid | 1 + 4 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 scripts/audio/EffectBasedPlayer.cs create mode 100644 scripts/audio/EffectBasedPlayer.cs.uid diff --git a/assets/audio/sfx/yuck.mp3.import b/assets/audio/sfx/yuck.mp3.import index 65416f2..196eea0 100644 --- a/assets/audio/sfx/yuck.mp3.import +++ b/assets/audio/sfx/yuck.mp3.import @@ -13,7 +13,7 @@ dest_files=["res://.godot/imported/yuck.mp3-300336a3ee536c8e6db69a73706c7ea5.mp3 [params] loop=false -loop_offset=0 -bpm=0 +loop_offset=0.0 +bpm=0.0 beat_count=0 bar_beats=4 diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index 579b17c..c243a43 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=24 format=3 uid="uid://co11v3w8hbwgf"] +[gd_scene load_steps=27 format=3 uid="uid://co11v3w8hbwgf"] [ext_resource type="Script" uid="uid://dildme6epx8l4" path="res://scripts/components/zombies/RuntimeZombieData.cs" id="1_qq3f1"] [ext_resource type="Texture2D" uid="uid://bwdqbrnn7ygtr" path="res://assets/sprites/atlases/zombies/Зондби.png" id="2_4pdxh"] @@ -16,6 +16,9 @@ [ext_resource type="AudioStream" uid="uid://bg76miyscfvhu" path="res://assets/audio/sfx/groan.tres" id="12_ad42i"] [ext_resource type="Script" uid="uid://cnn0ymuhypdff" path="res://scripts/audio/ChannelPlaylist.cs" id="12_he8da"] [ext_resource type="AudioStream" uid="uid://w0qfwds4o3ti" path="res://assets/audio/sfx/hit_generic.tres" id="12_vjrlo"] +[ext_resource type="Script" uid="uid://b8r6fxsfjdo3a" path="res://scripts/audio/EffectBasedPlayer.cs" id="17_ltj46"] +[ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://resources/effects/GarlicEffect.tres" id="18_2q05d"] +[ext_resource type="Resource" uid="uid://7uj0oe656jfx" path="res://resources/effects/SnowSlow.tres" id="19_ccrjo"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_63ls2"] resource_local_to_scene = true @@ -137,6 +140,11 @@ wait_time = 5.0 one_shot = true autostart = true +[node name="EffectPlayer" type="Node" parent="."] +script = ExtResource("17_ltj46") +effectsToMap = Array[Resource]([ExtResource("18_2q05d"), ExtResource("19_ccrjo")]) +streamsToMapTo = Array[AudioStream]([ExtResource("2_hh4qh"), ExtResource("3_ltj46")]) + [connection signal="OnDamaged" from="." to="HitPlayer" method="Play"] [connection signal="OnHPChanged" from="." to="CanvasGroup" method="DamageFlash"] [connection signal="area_entered" from="Eatbox" to="Eatbox" method="OnAreaEntered"] diff --git a/scripts/audio/EffectBasedPlayer.cs b/scripts/audio/EffectBasedPlayer.cs new file mode 100644 index 0000000..1713e94 --- /dev/null +++ b/scripts/audio/EffectBasedPlayer.cs @@ -0,0 +1,27 @@ +using Godot; +using Godot.Collections; +using System.Collections.Generic; +using Newlon.Components; +using Newlon.Systems.Effects; + +public partial class EffectBasedPlayer : Node +{ + [Export] public Array effectsToMap; + [Export] public Array streamsToMapTo; + private System.Collections.Generic.Dictionary effectToAudioMap = new(); + public override void _Ready() + { + GetParent().EffectStarted += OnEffectStarted; + + for (int i = 0; i < effectsToMap.Count; i++) + { + effectToAudioMap.Add(effectsToMap[i], streamsToMapTo[i]); + } + } + + public void OnEffectStarted(Effect what) + { + if (effectToAudioMap.ContainsKey(what) == false) return; + AudioSequencer.Play(what.Slot, effectToAudioMap[what]); + } +} diff --git a/scripts/audio/EffectBasedPlayer.cs.uid b/scripts/audio/EffectBasedPlayer.cs.uid new file mode 100644 index 0000000..ed55549 --- /dev/null +++ b/scripts/audio/EffectBasedPlayer.cs.uid @@ -0,0 +1 @@ +uid://b8r6fxsfjdo3a