diff options
author | metamuffin <metamuffin@disroot.org> | 2024-07-03 16:55:14 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-07-03 16:55:14 +0200 |
commit | 095db9be074577c0b46fa0ba080bfbd4f37c8f83 (patch) | |
tree | 27efe2ecfe60f3a80a9e16e731b39f7fa59ad84c /client/audio | |
parent | 074c37aae5b25844a9e85e89b30893042c9e6059 (diff) | |
parent | 872568d39a6e5e1334f02a384491b7645e65919d (diff) | |
download | hurrycurry-095db9be074577c0b46fa0ba080bfbd4f37c8f83.tar hurrycurry-095db9be074577c0b46fa0ba080bfbd4f37c8f83.tar.bz2 hurrycurry-095db9be074577c0b46fa0ba080bfbd4f37c8f83.tar.zst |
Merge branch 'master' of https://codeberg.org/metamuffin/undercooked
Diffstat (limited to 'client/audio')
-rw-r--r-- | client/audio/sound.gd | 43 | ||||
-rw-r--r-- | client/audio/sound.tscn | 2 |
2 files changed, 44 insertions, 1 deletions
diff --git a/client/audio/sound.gd b/client/audio/sound.gd index 6a562d75..c4ef0ad2 100644 --- a/client/audio/sound.gd +++ b/client/audio/sound.gd @@ -3,6 +3,9 @@ extends Node @onready var click_sound = $UI/Click @onready var hover_sound = $UI/Hover +var item_sounds: Dictionary = {} +var item_id: int = 0 + func play_click(): click_sound.play() @@ -14,3 +17,43 @@ func play_hover_maybe(element): if element.is_hovered(): return play_hover() + +func item_progress(item: Item, running: AudioStream, stopping: AudioStream) -> int: + item_id += 1 + var running_player: AudioStreamPlayer3D = AudioStreamPlayer3D.new() + running_player.stream = running + running_player.name = "Running%d" % item_id + add_child(running_player) + var stopping_player: AudioStreamPlayer3D = AudioStreamPlayer3D.new() + stopping_player.stream = stopping + stopping_player.name = "Stopping%d" % item_id + running_player.play() + add_child(stopping_player) + item_sounds[item_id] = [item, running_player, stopping_player, false] + return item_id + +func item_finished(id: int): + var running_player: AudioStreamPlayer3D = item_sounds[id][1] + var stopping_player: AudioStreamPlayer3D = item_sounds[id][2] + item_sounds[id][3] = true + running_player.stop() + stopping_player.play() + stopping_player.finished.connect(func(): + free_sound(id) + ) + +func free_sound(id: int): + var running_player: AudioStreamPlayer3D = item_sounds[id][1] + var stopping_player: AudioStreamPlayer3D = item_sounds[id][2] + running_player.queue_free() + stopping_player.queue_free() + item_sounds.erase(id) + +func _physics_process(_delta): + for k in item_sounds.keys(): + if item_sounds[k][0] != null: + var position: Vector3 = item_sounds[k][0].position + item_sounds[k][1].position = position + item_sounds[k][2].position = position + elif not item_sounds[k][3]: + item_finished(k) diff --git a/client/audio/sound.tscn b/client/audio/sound.tscn index 7c0458dc..3f2607c8 100644 --- a/client/audio/sound.tscn +++ b/client/audio/sound.tscn @@ -4,7 +4,7 @@ [ext_resource type="AudioStream" uid="uid://cpyn511c5mtni" path="res://menu/sounds/click.ogg" id="2_mhrce"] [ext_resource type="AudioStream" uid="uid://dtr1khfyqr56o" path="res://menu/sounds/hover.ogg" id="3_qft2s"] -[node name="Sound" type="Node"] +[node name="Sound" type="Node3D"] script = ExtResource("1_b0qb1") [node name="UI" type="Node" parent="."] |