mise en place du système audio par phase et de la musique du camion
This commit is contained in:
parent
4d58f3ee44
commit
7c8eba29d8
@ -13,7 +13,7 @@ dest_files=["res://.godot/imported/ambiance_phase_2.ogg-2260c3829d7e53dd94462ea7
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
loop_offset=0.0
|
||||
bpm=0.0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://gjr7ruv7wfci"
|
||||
path="res://.godot/imported/truck_ambience_phase_1.ogg-68cfb99a7f0a6b83abe32ff81d60f6ab.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://common/music/assets/ambiance/truck_ambience_phase_1.ogg"
|
||||
dest_files=["res://.godot/imported/truck_ambience_phase_1.ogg-68cfb99a7f0a6b83abe32ff81d60f6ab.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://car7b6j0ihi30"
|
||||
path="res://.godot/imported/truck_ambience_phase_2.ogg-e62a693ce667406e511b7afb0da84f79.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://common/music/assets/ambiance/truck_ambience_phase_2.ogg"
|
||||
dest_files=["res://.godot/imported/truck_ambience_phase_2.ogg-e62a693ce667406e511b7afb0da84f79.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://dtcv4p3a03giu"
|
||||
path="res://.godot/imported/truck_ambience_phase_3.ogg-9e9b82ea556ea85244bd2768bddbb340.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://common/music/assets/ambiance/truck_ambience_phase_3.ogg"
|
||||
dest_files=["res://.godot/imported/truck_ambience_phase_3.ogg-9e9b82ea556ea85244bd2768bddbb340.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
19
common/music/assets/morceaux/truck_music.ogg.import
Normal file
19
common/music/assets/morceaux/truck_music.ogg.import
Normal file
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://brtjlgjqnrvcb"
|
||||
path="res://.godot/imported/truck_music.ogg-cb4f770bcd6358719b9d817459f5f86b.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://common/music/assets/morceaux/truck_music.ogg"
|
||||
dest_files=["res://.godot/imported/truck_music.ogg-cb4f770bcd6358719b9d817459f5f86b.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://b6hscxcrj065q"]
|
||||
[gd_scene load_steps=11 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/morceaux/forest_phase_1.ogg" id="1_stre8"]
|
||||
@ -6,31 +6,54 @@
|
||||
[ext_resource type="AudioStream" uid="uid://dipnmlprwfo12" path="res://common/music/assets/ambiance/ambiance_phase_1.ogg" id="4_71qp2"]
|
||||
[ext_resource type="AudioStream" uid="uid://bm0tdi6bd2e65" path="res://common/music/assets/ambiance/ambiance_phase_2.ogg" id="5_a71a3"]
|
||||
[ext_resource type="AudioStream" uid="uid://dftxjfdqgsbd3" path="res://common/music/assets/ambiance/ambiance_phase_3.ogg" id="6_i5lxw"]
|
||||
[ext_resource type="AudioStream" uid="uid://brtjlgjqnrvcb" path="res://common/music/assets/morceaux/truck_music.ogg" id="7_a71a3"]
|
||||
|
||||
[sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_i0tje"]
|
||||
loop = false
|
||||
stream_count = 2
|
||||
stream_0 = ExtResource("1_stre8")
|
||||
stream_1 = ExtResource("2_ji160")
|
||||
|
||||
[sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_w0e2r"]
|
||||
loop = false
|
||||
[sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_i5lxw"]
|
||||
stream_count = 3
|
||||
stream_0 = ExtResource("4_71qp2")
|
||||
stream_1 = ExtResource("5_a71a3")
|
||||
stream_2 = ExtResource("6_i5lxw")
|
||||
stream_0/stream = ExtResource("4_71qp2")
|
||||
stream_0/volume = 0.0
|
||||
stream_1/stream = ExtResource("5_a71a3")
|
||||
stream_1/volume = -60.0
|
||||
stream_2/stream = ExtResource("6_i5lxw")
|
||||
stream_2/volume = -60.0
|
||||
|
||||
[node name="Son" type="Node" node_paths=PackedStringArray("decontamination_musics")]
|
||||
[sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_i0tje"]
|
||||
stream_count = 2
|
||||
stream_0/stream = ExtResource("1_stre8")
|
||||
stream_0/volume = -60.0
|
||||
stream_1/stream = ExtResource("2_ji160")
|
||||
stream_1/volume = -60.0
|
||||
|
||||
[sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_w0e2r"]
|
||||
stream_count = 1
|
||||
stream_0/stream = ExtResource("7_a71a3")
|
||||
stream_0/volume = -60.0
|
||||
|
||||
[node name="Son" type="Node" node_paths=PackedStringArray("playing_ambiances")]
|
||||
process_mode = 3
|
||||
script = ExtResource("1_ji160")
|
||||
decontamination_musics = [null, null]
|
||||
decontamination_musics_levels = Array[float]([0.0, 30.0])
|
||||
ambiance_volume = -3.0
|
||||
garden_phases_scores = Array[int]([0, 10, 30])
|
||||
playing_ambiances = [NodePath("Ambiance/Default")]
|
||||
|
||||
[node name="Musique" type="AudioStreamPlayer" parent="."]
|
||||
stream = SubResource("AudioStreamPlaylist_i0tje")
|
||||
volume_db = 1.5
|
||||
[node name="Ambiance" type="Node" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Default" type="AudioStreamPlayer" parent="Ambiance"]
|
||||
unique_name_in_owner = true
|
||||
stream = SubResource("AudioStreamSynchronized_i5lxw")
|
||||
volume_db = 7.021
|
||||
autoplay = true
|
||||
|
||||
[node name="Ambiance" type="AudioStreamPlayer" parent="."]
|
||||
stream = SubResource("AudioStreamPlaylist_w0e2r")
|
||||
[node name="Musics" type="Node" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Planet" type="AudioStreamPlayer" parent="Musics"]
|
||||
unique_name_in_owner = true
|
||||
stream = SubResource("AudioStreamSynchronized_i0tje")
|
||||
autoplay = true
|
||||
|
||||
[node name="Truck" type="AudioStreamPlayer" parent="Musics"]
|
||||
unique_name_in_owner = true
|
||||
stream = SubResource("AudioStreamSynchronized_w0e2r")
|
||||
autoplay = true
|
||||
|
||||
@ -1,61 +1,105 @@
|
||||
extends Node
|
||||
|
||||
const MIN_VOLUME = -60.
|
||||
|
||||
var is_ready = false
|
||||
|
||||
@export var music_volume : float = 0. :
|
||||
set(v):
|
||||
music_volume = v
|
||||
if is_ready: setup_volume()
|
||||
@export var ambiance_volume : float = 0. :
|
||||
set(v):
|
||||
ambiance_volume = v
|
||||
if is_ready: setup_volume()
|
||||
|
||||
@export var default_fade_time = 1.0
|
||||
|
||||
@export var garden_musics : Array[AudioStreamPlayer]
|
||||
@export var garden_score_musics_levels : Array[float]
|
||||
@export var garden_phase = 0
|
||||
@export var garden_phases_scores : Array[int]
|
||||
|
||||
@onready var playing_music = null : set = play_music
|
||||
@export var playing_musics : Array[AudioStreamPlayer] = []
|
||||
@export var playing_ambiances : Array[AudioStreamPlayer] = []
|
||||
|
||||
func _ready():
|
||||
GameInfo.game_data.current_planet_data_updated.connect(_on_current_planet_data_updated)
|
||||
setup_volume()
|
||||
is_ready = true
|
||||
|
||||
func setup_volume():
|
||||
for c in %Ambiance.get_children():
|
||||
var player = c as AudioStreamPlayer
|
||||
player.volume_db = ambiance_volume if playing_ambiances.find(player) != -1 else MIN_VOLUME
|
||||
|
||||
for c in %Musics.get_children():
|
||||
var player = c as AudioStreamPlayer
|
||||
player.volume_db = music_volume if playing_musics.find(player) != -1 else MIN_VOLUME
|
||||
|
||||
for player in get_all_audio_stream():
|
||||
player.play()
|
||||
setup_phase(player)
|
||||
|
||||
func update_phase():
|
||||
for player in get_all_audio_stream():
|
||||
setup_phase(player)
|
||||
|
||||
func get_all_audio_stream() -> Array[AudioStreamPlayer]:
|
||||
var all_audio_stream : Array[AudioStreamPlayer] = []
|
||||
var all_children = %Ambiance.get_children()
|
||||
all_children.append_array(%Musics.get_children())
|
||||
|
||||
print(all_children)
|
||||
for c in all_children:
|
||||
if c is AudioStreamPlayer:
|
||||
all_audio_stream.append(c)
|
||||
return all_audio_stream
|
||||
|
||||
func _on_current_planet_data_updated(planet_data : PlanetData):
|
||||
if planet_data:
|
||||
planet_data.contamination_updated.connect(_on_contamination_updated)
|
||||
if len(garden_musics):
|
||||
play_music(garden_musics[0])
|
||||
|
||||
func _on_contamination_updated(garden_score : float):
|
||||
var actual_level = 0
|
||||
if len(garden_score_musics_levels) and len(garden_musics):
|
||||
for level in range(1, len(garden_score_musics_levels)):
|
||||
if garden_score > garden_score_musics_levels[level]:
|
||||
actual_level = level
|
||||
|
||||
if len(garden_musics) > actual_level:
|
||||
play_music(garden_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.
|
||||
update_garden_phase(planet_data)
|
||||
planet_data.updated.connect(update_garden_phase)
|
||||
|
||||
if fade_in:
|
||||
music.volume_db = -80.
|
||||
music.play()
|
||||
func update_garden_phase(planet_data : PlanetData):
|
||||
var phase : int = 0
|
||||
for i in range(len(garden_phases_scores)):
|
||||
if planet_data.garden_score >= garden_phases_scores[i]:
|
||||
phase = i
|
||||
|
||||
fade_tween.tween_property(music, "volume_db", target_volume, fade_time)
|
||||
update_phase()
|
||||
|
||||
garden_phase = phase
|
||||
|
||||
func enter_planet():
|
||||
set_volume(%Planet, music_volume)
|
||||
set_volume(%Truck, MIN_VOLUME)
|
||||
|
||||
func enter_truck():
|
||||
set_volume(%Planet, MIN_VOLUME)
|
||||
set_volume(%Truck, music_volume)
|
||||
|
||||
func stop_music(music : AudioStreamPlayer, with_fade = false):
|
||||
if playing_musics.find(music) != -1:
|
||||
playing_musics.remove_at(playing_musics.find(music))
|
||||
set_volume(music, MIN_VOLUME, with_fade)
|
||||
|
||||
func play_music(music : AudioStreamPlayer, with_fade = false):
|
||||
playing_musics.append(music)
|
||||
set_volume(music, music_volume, with_fade)
|
||||
|
||||
func setup_phase(music : AudioStreamPlayer):
|
||||
if music.stream is AudioStreamSynchronized:
|
||||
var sync_stream = music.stream as AudioStreamSynchronized
|
||||
var phase_stream_id = min(garden_phase, sync_stream.stream_count - 1)
|
||||
for i in range(sync_stream.stream_count):
|
||||
sync_stream.set_sync_stream_volume(
|
||||
i,
|
||||
0. if i == phase_stream_id else MIN_VOLUME
|
||||
)
|
||||
|
||||
|
||||
func set_volume(music : AudioStreamPlayer, to : float, fade_time = default_fade_time) -> Tween:
|
||||
var fade_tween : Tween = get_tree().create_tween()
|
||||
|
||||
fade_tween.tween_property(music, "volume_db", to, fade_time)
|
||||
|
||||
if not fade_in:
|
||||
fade_tween.finished.connect(
|
||||
func():
|
||||
music.stop()
|
||||
music.volume_db = music_default_volume
|
||||
)
|
||||
return fade_tween
|
||||
|
||||
3
default_bus_layout.tres
Normal file
3
default_bus_layout.tres
Normal file
@ -0,0 +1,3 @@
|
||||
[gd_resource type="AudioBusLayout" format=3 uid="uid://br1p68sy17lcg"]
|
||||
|
||||
[resource]
|
||||
@ -39,6 +39,7 @@ func _ready():
|
||||
|
||||
generate_first_entities()
|
||||
|
||||
Music.enter_planet()
|
||||
|
||||
if player:
|
||||
generate_near_chunks(player)
|
||||
|
||||
@ -1,19 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://gjr7ruv7wfci"
|
||||
path="res://.godot/imported/truck_ambience_phase_1.ogg-93ba4888f21105994ff3077be2e67362.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://stages/terrain/truck/assets/sound/truck_ambience_phase_1.ogg"
|
||||
dest_files=["res://.godot/imported/truck_ambience_phase_1.ogg-93ba4888f21105994ff3077be2e67362.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -1,19 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://car7b6j0ihi30"
|
||||
path="res://.godot/imported/truck_ambience_phase_2.ogg-e467705058e977f04e8965694bcde916.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://stages/terrain/truck/assets/sound/truck_ambience_phase_2.ogg"
|
||||
dest_files=["res://.godot/imported/truck_ambience_phase_2.ogg-e467705058e977f04e8965694bcde916.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -1,19 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://dtcv4p3a03giu"
|
||||
path="res://.godot/imported/truck_ambience_phase_3.ogg-3575c0ff6109a5d9ecc1823ebde9c498.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://stages/terrain/truck/assets/sound/truck_ambience_phase_3.ogg"
|
||||
dest_files=["res://.godot/imported/truck_ambience_phase_3.ogg-3575c0ff6109a5d9ecc1823ebde9c498.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -1,19 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://brtjlgjqnrvcb"
|
||||
path="res://.godot/imported/truck_music.ogg-fd86398cba7135d1ab1c7dd00fd89df7.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://stages/terrain/truck/assets/sound/truck_music.ogg"
|
||||
dest_files=["res://.godot/imported/truck_music.ogg-fd86398cba7135d1ab1c7dd00fd89df7.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -27,6 +27,8 @@ func _ready():
|
||||
compost.reward = new_reward
|
||||
data.rewards.append(new_reward)
|
||||
compost.rewarded.connect(_on_compost_rewarded)
|
||||
|
||||
Music.enter_truck()
|
||||
|
||||
func _on_compost_rewarded(c: Compost):
|
||||
data.rewarded_times += 1
|
||||
|
||||
Loading…
Reference in New Issue
Block a user