diff options
author | nokoe <nokoe@mailbox.org> | 2024-07-03 15:04:02 +0200 |
---|---|---|
committer | nokoe <nokoe@mailbox.org> | 2024-07-03 15:04:02 +0200 |
commit | 11d2b799739d6e4a0fa7496a74cf10bff925b6ea (patch) | |
tree | b46927ad0a7629ee7753937f267141f62983faee /client/audio | |
parent | e994feebe11e4c1d8b7f3825f2e1c9bbd2069e82 (diff) | |
download | hurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar hurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar.bz2 hurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar.zst |
add progress sound
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="."] |