aboutsummaryrefslogtreecommitdiff
path: root/client/audio/sound.gd
diff options
context:
space:
mode:
authornokoe <nokoe@mailbox.org>2024-07-03 15:04:02 +0200
committernokoe <nokoe@mailbox.org>2024-07-03 15:04:02 +0200
commit11d2b799739d6e4a0fa7496a74cf10bff925b6ea (patch)
treeb46927ad0a7629ee7753937f267141f62983faee /client/audio/sound.gd
parente994feebe11e4c1d8b7f3825f2e1c9bbd2069e82 (diff)
downloadhurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar
hurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar.bz2
hurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar.zst
add progress sound
Diffstat (limited to 'client/audio/sound.gd')
-rw-r--r--client/audio/sound.gd43
1 files changed, 43 insertions, 0 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)