ajout du comportement d'activation de la musique
This commit is contained in:
63
common/music/scripts/music.gd
Normal file
63
common/music/scripts/music.gd
Normal file
@@ -0,0 +1,63 @@
|
||||
extends Node
|
||||
|
||||
@export var default_fade_time = 1.0
|
||||
|
||||
@export var decontamination_musics : Array[AudioStreamPlayer]
|
||||
@export var decontamination_musics_levels : Array[float]
|
||||
|
||||
@onready var playing_music = null : set = play_music
|
||||
|
||||
func _ready():
|
||||
GameInfo.game_data.current_planet_data_updated.connect(_on_current_planet_data_updated)
|
||||
|
||||
func _on_current_planet_data_updated(planet_data : PlanetData):
|
||||
if planet_data:
|
||||
planet_data.contamination_updated.connect(_on_contamination_updated)
|
||||
if len(decontamination_musics):
|
||||
play_music(decontamination_musics[0])
|
||||
|
||||
func _on_contamination_updated(decontamination_surface : float):
|
||||
var actual_level = 0
|
||||
if len(decontamination_musics_levels) and len(decontamination_musics):
|
||||
for level in range(1, len(decontamination_musics_levels)):
|
||||
if decontamination_surface > decontamination_musics_levels[level]:
|
||||
actual_level = level
|
||||
|
||||
print(actual_level)
|
||||
|
||||
if len(decontamination_musics) > actual_level:
|
||||
play_music(decontamination_musics[actual_level])
|
||||
|
||||
func stop_music():
|
||||
play_music(null)
|
||||
|
||||
func play_music(music : AudioStreamPlayer):
|
||||
if playing_music != null:
|
||||
if playing_music != music:
|
||||
if playing_music:
|
||||
await audio_fade(playing_music, false).finished
|
||||
|
||||
if music:
|
||||
music.play()
|
||||
elif music != null and music != playing_music:
|
||||
music.play()
|
||||
playing_music = music
|
||||
|
||||
func audio_fade(music : AudioStreamPlayer, fade_in = true, fade_time = default_fade_time) -> Tween:
|
||||
var fade_tween : Tween = get_tree().create_tween()
|
||||
var music_default_volume = music.volume_db
|
||||
var target_volume = music_default_volume if fade_in else -80.
|
||||
|
||||
if fade_in:
|
||||
music.volume_db = -80.
|
||||
music.play()
|
||||
|
||||
fade_tween.tween_property(music, "volume_db", target_volume, fade_time)
|
||||
|
||||
if not fade_in:
|
||||
fade_tween.finished.connect(
|
||||
func():
|
||||
music.stop()
|
||||
music.volume_db = music_default_volume
|
||||
)
|
||||
return fade_tween
|
||||
1
common/music/scripts/music.gd.uid
Normal file
1
common/music/scripts/music.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://2p5d6vogtn82
|
||||
Reference in New Issue
Block a user