* ajout du panneau solaire #54 * ajout d'un tutoriel #53 * equilibrage du jeu #73 * ajout d'un son pour l'annonce
62 lines
1.8 KiB
GDScript
62 lines
1.8 KiB
GDScript
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
|
|
|
|
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
|