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/sound.gd | |
| 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/sound.gd')
| -rw-r--r-- | client/audio/sound.gd | 43 | 
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)  |