ajout du comportement d'activation de la musique
This commit is contained in:
@@ -12,7 +12,7 @@ dest_files=["res://.godot/imported/forest_phase_1.ogg-08213a81a42ba2cf4c67c1bfac
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop=true
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
|
||||
@@ -12,7 +12,7 @@ dest_files=["res://.godot/imported/forest_phase_2.ogg-b312ca5fea9e7b3157a9ab7a4c
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop=true
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://b6hscxcrj065q"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://2p5d6vogtn82" path="res://common/music/scripts/music.gd" id="1_ji160"]
|
||||
[ext_resource type="AudioStream" uid="uid://diyefcv8tqa3r" path="res://common/music/assets/forest_phase_1.ogg" id="1_stre8"]
|
||||
[ext_resource type="AudioStream" uid="uid://bqwiaek5b5q00" path="res://common/music/assets/forest_phase_2.ogg" id="2_ji160"]
|
||||
[ext_resource type="AudioStream" uid="uid://d1fyd5o331360" path="res://common/music/assets/vent.ogg" id="2_n52pk"]
|
||||
|
||||
[sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_ei6w7"]
|
||||
loop = false
|
||||
stream_count = 2
|
||||
stream_0 = ExtResource("1_stre8")
|
||||
stream_1 = ExtResource("2_ji160")
|
||||
|
||||
[node name="Music" type="Node"]
|
||||
[node name="Music" type="Node" node_paths=PackedStringArray("decontamination_musics")]
|
||||
process_mode = 3
|
||||
script = ExtResource("1_ji160")
|
||||
decontamination_musics = [NodePath("ForestPhase1"), NodePath("ForestPhase2")]
|
||||
decontamination_musics_levels = Array[float]([0.0, 30.0])
|
||||
|
||||
[node name="AudioStreamPlayer_music" type="AudioStreamPlayer" parent="."]
|
||||
stream = SubResource("AudioStreamPlaylist_ei6w7")
|
||||
volume_db = -5.0
|
||||
autoplay = true
|
||||
parameters/looping = false
|
||||
[node name="ForestPhase1" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("1_stre8")
|
||||
volume_db = -10.0
|
||||
|
||||
[node name="AudioStreamPlayer2_ambient" type="AudioStreamPlayer" parent="."]
|
||||
[node name="ForestPhase2" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("2_ji160")
|
||||
volume_db = -10.0
|
||||
|
||||
[node name="Wind" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("2_n52pk")
|
||||
autoplay = true
|
||||
parameters/looping = false
|
||||
|
||||
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