diff options
Diffstat (limited to 'client')
| -rw-r--r-- | client/audio/sound.gd | 32 |
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) |