aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-10-14 22:55:11 +0200
committermetamuffin <metamuffin@disroot.org>2025-10-14 22:56:03 +0200
commit50bf6975d873aabea8662080b40b211232b29dce (patch)
tree7667cf1b3e37fd421fadd6eedc09ffd1f225b26f
parent19d805185305de9d7e4dc390cb7fab378253b2be (diff)
downloadhurrycurry-50bf6975d873aabea8662080b40b211232b29dce.tar
hurrycurry-50bf6975d873aabea8662080b40b211232b29dce.tar.bz2
hurrycurry-50bf6975d873aabea8662080b40b211232b29dce.tar.zst
Fade out music when window focus is lost
-rw-r--r--client/audio/sound.gd32
1 files changed, 20 insertions, 12 deletions
diff --git a/client/audio/sound.gd b/client/audio/sound.gd
index af1df28c..e5241396 100644
--- a/client/audio/sound.gd
+++ b/client/audio/sound.gd
@@ -34,16 +34,24 @@ const FADE_IN_SPEED = 200.
const FADE_OUT_SPEED = 20.
const EFFECT_FADE_SPEED = 0.5
-var saved_filename; var saved_volume; var saved_dampen
+var is_saved = false
+var saved_filename
+var saved_volume = 0.
+var saved_dampen = false
func _ready() -> void:
- get_window().focus_entered.connect(func(): set_music(saved_filename, saved_volume, saved_dampen))
+ get_window().focus_entered.connect(func(): restore_playing())
get_window().focus_exited.connect(func(): save_playing(); set_music(null))
+func restore_playing():
+ if is_saved: set_music(saved_filename, saved_volume, saved_dampen)
+ is_saved = false
+
func save_playing():
saved_filename = current_music_filename
saved_dampen = dampen_music
saved_volume = volume_target
+ is_saved = true
func set_music(filename, volume = 0., dampen = false):
dampen_music = dampen
@@ -65,7 +73,7 @@ func set_music(filename, volume = 0., dampen = false):
volume_target = volume
dampen_target = 1. if dampen else 0.
-func _process(dt: float):
+func _physics_process(dt: float):
for c in $Music.get_children():
if c is AudioStreamPlayer:
if c == current_music_player:
@@ -85,6 +93,15 @@ func _process(dt: float):
lowpass.cutoff_hz = lerp(3200., 400., pow(dampen_value, 8.))
reverb.wet = dampen_value * 0.5
+ 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)
+
+
func set_volume(bus: int, value: float):
AudioServer.set_bus_volume_db(bus, value)
if value == -30: AudioServer.set_bus_mute(bus, true)
@@ -139,12 +156,3 @@ func free_sound(id: int):
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)