changement du scene manager, amélioration du cockpit et autres
* refonte du scene manager * refonte du audio manager * premier rework des plantes * nettoyage des dossiers/fichiers * renommage de planète en region * fix des run
This commit is contained in:
@@ -1,12 +1,11 @@
|
||||
[gd_scene load_steps=30 format=3 uid="uid://b6hscxcrj065q"]
|
||||
[gd_scene load_steps=28 format=3 uid="uid://b6hscxcrj065q"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://2p5d6vogtn82" path="res://common/audio_manager/scripts/audio_manager.gd" id="1_0tvca"]
|
||||
[ext_resource type="AudioStream" uid="uid://dipnmlprwfo12" path="res://common/audio_manager/assets/ambiance/niveau/ambiance_phase_1.ogg" id="2_a4u5m"]
|
||||
[ext_resource type="AudioStream" uid="uid://bm0tdi6bd2e65" path="res://common/audio_manager/assets/ambiance/niveau/ambiance_phase_2.ogg" id="3_8nsyr"]
|
||||
[ext_resource type="AudioStream" uid="uid://dftxjfdqgsbd3" path="res://common/audio_manager/assets/ambiance/niveau/ambiance_phase_3.ogg" id="4_athui"]
|
||||
[ext_resource type="AudioStream" uid="uid://dipnmlprwfo12" path="res://common/audio_manager/assets/ambiance/niveau/ambiance_phase_1.ogg" id="2_tuvql"]
|
||||
[ext_resource type="AudioStream" uid="uid://dcbuhtc085q2x" path="res://common/audio_manager/assets/morceaux/niveau_v2/mines_phase_1.ogg" id="5_ajci6"]
|
||||
[ext_resource type="AudioStream" uid="uid://bqwiaek5b5q00" path="res://common/audio_manager/assets/morceaux/niveau/forest_phase_2.ogg" id="6_ldyhq"]
|
||||
[ext_resource type="AudioStream" uid="uid://d4lqhgf0lhgge" path="res://common/audio_manager/assets/morceaux/niveau/forest_phase_3.ogg" id="7_ol34x"]
|
||||
[ext_resource type="AudioStream" uid="uid://bpf6witukorka" path="res://common/audio_manager/assets/morceaux/autres/main_menu.ogg" id="7_tuvql"]
|
||||
[ext_resource type="AudioStream" uid="uid://brtjlgjqnrvcb" path="res://common/audio_manager/assets/morceaux/autres/truck_music.ogg" id="8_0e5ja"]
|
||||
[ext_resource type="AudioStream" uid="uid://bnxsnege8qq6e" path="res://common/audio_manager/assets/morceaux/niveau/forest_phase_4.ogg" id="8_ajci6"]
|
||||
[ext_resource type="AudioStream" uid="uid://dfrp66a4isnt6" path="res://common/audio_manager/assets/sfx/dig/dig_1.wav" id="9_gv65y"]
|
||||
@@ -24,15 +23,6 @@
|
||||
[ext_resource type="AudioStream" uid="uid://d1cpi438ep0ys" path="res://common/audio_manager/assets/sfx/announce/annnounce.wav" id="22_btfwx"]
|
||||
[ext_resource type="AudioStream" uid="uid://ccq04ahrwr3bv" path="res://common/audio_manager/assets/sfx/alarm/alarm.wav" id="23_fwu3w"]
|
||||
|
||||
[sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_i5lxw"]
|
||||
stream_count = 3
|
||||
stream_0/stream = ExtResource("2_a4u5m")
|
||||
stream_0/volume = 0.0
|
||||
stream_1/stream = ExtResource("3_8nsyr")
|
||||
stream_1/volume = -60.0
|
||||
stream_2/stream = ExtResource("4_athui")
|
||||
stream_2/volume = -60.0
|
||||
|
||||
[sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_ajci6"]
|
||||
stream_count = 4
|
||||
stream_0 = ExtResource("5_ajci6")
|
||||
@@ -66,33 +56,32 @@ streams_count = 2
|
||||
stream_0/stream = ExtResource("20_pu6t4")
|
||||
stream_1/stream = ExtResource("21_dk5s6")
|
||||
|
||||
[node name="AudioManager" type="Node" node_paths=PackedStringArray("playing_soundtracks")]
|
||||
[node name="AudioManager" type="Node"]
|
||||
process_mode = 3
|
||||
script = ExtResource("1_0tvca")
|
||||
default_fade_time = 2.0
|
||||
garden_phases_scores = Array[int]([0, 10, 30])
|
||||
playing_soundtracks = [NodePath("Ambiance/Default")]
|
||||
|
||||
[node name="Ambiance" type="Node" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Default" type="AudioStreamPlayer" parent="Ambiance"]
|
||||
[node name="Exterior" type="AudioStreamPlayer" parent="Ambiance"]
|
||||
unique_name_in_owner = true
|
||||
stream = SubResource("AudioStreamSynchronized_i5lxw")
|
||||
autoplay = true
|
||||
stream = ExtResource("2_tuvql")
|
||||
|
||||
[node name="Musics" type="Node" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Planet" type="AudioStreamPlayer" parent="Musics"]
|
||||
[node name="Region" type="AudioStreamPlayer" parent="Musics"]
|
||||
unique_name_in_owner = true
|
||||
stream = SubResource("AudioStreamPlaylist_ajci6")
|
||||
autoplay = true
|
||||
|
||||
[node name="Title" type="AudioStreamPlayer" parent="Musics"]
|
||||
unique_name_in_owner = true
|
||||
stream = ExtResource("7_tuvql")
|
||||
|
||||
[node name="Truck" type="AudioStreamPlayer" parent="Musics"]
|
||||
unique_name_in_owner = true
|
||||
stream = ExtResource("8_0e5ja")
|
||||
autoplay = true
|
||||
|
||||
[node name="Sfx" type="Node" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@@ -7,132 +7,115 @@ const MAX_VOLUME = 24.
|
||||
|
||||
@export var default_fade_time = 1.0
|
||||
|
||||
@export var garden_phase = 0
|
||||
@export var garden_phases_scores : Array[int]
|
||||
|
||||
@export var playing_soundtracks : Array[AudioStreamPlayer] = []
|
||||
@export var playing_music : AudioStreamPlayer = null
|
||||
@export var playing_ambiance : AudioStreamPlayer = null
|
||||
|
||||
var default_volumes := {}
|
||||
|
||||
func _ready():
|
||||
GameInfo.game_data.current_planet_data_updated.connect(_on_current_planet_data_updated)
|
||||
fetch_default_volumes()
|
||||
setup_volume()
|
||||
settings.sound_changed.connect(
|
||||
func(_s) : setup_volume()
|
||||
)
|
||||
for player in get_all_soundtrack_players():
|
||||
player.play()
|
||||
for player in get_all_players():
|
||||
player.stop()
|
||||
|
||||
fetch_default_volumes()
|
||||
setup_volume()
|
||||
settings.sound_changed.connect(
|
||||
func(_s) : setup_volume()
|
||||
)
|
||||
SceneManager.scene_loaded.connect(_on_change_scene)
|
||||
|
||||
func _on_change_scene(scene : Scene):
|
||||
play_ambiance()
|
||||
|
||||
match scene.scene_id:
|
||||
"TITLE":
|
||||
play_music("Title")
|
||||
"REGION":
|
||||
play_music("Region")
|
||||
play_ambiance("Exterior")
|
||||
"COCKPIT":
|
||||
play_music("Truck")
|
||||
|
||||
func fetch_default_volumes():
|
||||
var all_players := get_all_soundtrack_players()
|
||||
all_players.append_array(get_all_sfx_players())
|
||||
var all_players := get_all_players()
|
||||
|
||||
for player in all_players:
|
||||
default_volumes[player] = player.volume_db
|
||||
for player in all_players:
|
||||
default_volumes[player] = player.volume_db
|
||||
|
||||
func setup_volume():
|
||||
for player in get_all_soundtrack_players():
|
||||
player.volume_db = get_volume_from_parent(player) if (
|
||||
playing_soundtracks.find(player) != -1
|
||||
) else MIN_VOLUME
|
||||
setup_phase(player)
|
||||
for player in get_all_sfx_players():
|
||||
player.volume_db = get_volume_from_parent(player)
|
||||
for player in get_all_players():
|
||||
player.volume_db = get_volume_from_parent(player)
|
||||
|
||||
func get_volume_from_parent(player : AudioStreamPlayer) -> float:
|
||||
var settings_volume = 0.5
|
||||
var settings_volume = 0.5
|
||||
|
||||
if player.get_parent() == %Ambiance:
|
||||
settings_volume = settings.ambiance_volume
|
||||
elif player.get_parent() == %Sfx:
|
||||
settings_volume = settings.sfx_volume
|
||||
elif player.get_parent() == %Musics:
|
||||
settings_volume = settings.music_volume
|
||||
|
||||
return default_volumes[player] + lerp(MIN_VOLUME, MAX_VOLUME, settings_volume)
|
||||
if player.get_parent() == %Ambiance:
|
||||
settings_volume = settings.ambiance_volume
|
||||
elif player.get_parent() == %Sfx:
|
||||
settings_volume = settings.sfx_volume
|
||||
elif player.get_parent() == %Musics:
|
||||
settings_volume = settings.music_volume
|
||||
|
||||
return default_volumes[player] + lerp(MIN_VOLUME, MAX_VOLUME, settings_volume)
|
||||
|
||||
func update_phase():
|
||||
for player in get_all_soundtrack_players():
|
||||
var playing : bool = player.volume_db != MIN_VOLUME
|
||||
if playing:
|
||||
await set_volume(player, MIN_VOLUME).finished
|
||||
setup_phase(player)
|
||||
if playing:
|
||||
set_volume(player, get_volume_from_parent(player))
|
||||
func get_all_players() -> Array[AudioStreamPlayer]:
|
||||
var players : Array[AudioStreamPlayer] = []
|
||||
players.append_array(get_players_from_node(%Musics))
|
||||
players.append_array(get_players_from_node(%Ambiance))
|
||||
players.append_array(get_players_from_node(%Sfx))
|
||||
|
||||
func get_all_soundtrack_players() -> Array[AudioStreamPlayer]:
|
||||
var players : Array[AudioStreamPlayer] = []
|
||||
players.append_array(get_players_from_node(%Musics))
|
||||
players.append_array(get_players_from_node(%Ambiance))
|
||||
|
||||
return players
|
||||
|
||||
func get_all_sfx_players() -> Array[AudioStreamPlayer]:
|
||||
return get_players_from_node(%Sfx)
|
||||
return players
|
||||
|
||||
func get_players_from_node(node : Node) -> Array[AudioStreamPlayer]:
|
||||
var streams : Array[AudioStreamPlayer] = []
|
||||
var streams : Array[AudioStreamPlayer] = []
|
||||
|
||||
for c in node.get_children():
|
||||
if c is AudioStreamPlayer:
|
||||
streams.append(c)
|
||||
return streams
|
||||
for c in node.get_children():
|
||||
if c is AudioStreamPlayer:
|
||||
streams.append(c)
|
||||
return streams
|
||||
|
||||
func set_volume(player : AudioStreamPlayer, to : float, fade_time = default_fade_time) -> Tween:
|
||||
var fade_tween : Tween = get_tree().create_tween()
|
||||
|
||||
func _on_current_planet_data_updated(planet_data : PlanetData):
|
||||
if planet_data:
|
||||
update_garden_phase(planet_data)
|
||||
planet_data.updated.connect(update_garden_phase)
|
||||
|
||||
func update_garden_phase(planet_data : PlanetData):
|
||||
var phase : int = garden_phase
|
||||
for i in range(len(garden_phases_scores)):
|
||||
if planet_data.garden_score >= garden_phases_scores[i] and i > garden_phase:
|
||||
phase = i
|
||||
fade_tween.tween_property(player, "volume_db", to, fade_time)
|
||||
|
||||
if garden_phase != phase:
|
||||
update_phase()
|
||||
return fade_tween
|
||||
|
||||
garden_phase = phase
|
||||
func reset_volume(player : AudioStreamPlayer):
|
||||
player.volume_db = get_volume_from_parent(player)
|
||||
|
||||
func enter_planet():
|
||||
play_music(%Planet, true)
|
||||
stop_music(%Truck, true)
|
||||
func play_sfx(sfx_name : String):
|
||||
var player := %Sfx.find_child(sfx_name) as AudioStreamPlayer
|
||||
if player:
|
||||
player.play()
|
||||
else:
|
||||
printerr("Sfx %s not found" % sfx_name)
|
||||
|
||||
func enter_truck():
|
||||
play_music(%Truck, true)
|
||||
stop_music(%Planet, true)
|
||||
func play_music(music_name : String = ""):
|
||||
if playing_music:
|
||||
await set_volume(playing_music, MIN_VOLUME).finished
|
||||
if playing_music:
|
||||
playing_music.stop()
|
||||
reset_volume(playing_music)
|
||||
playing_music = null
|
||||
if music_name:
|
||||
var player := %Musics.find_child(music_name) as AudioStreamPlayer
|
||||
if player:
|
||||
playing_music = player
|
||||
player.play()
|
||||
else:
|
||||
printerr("Music %s not found" % music_name)
|
||||
|
||||
func stop_music(music : AudioStreamPlayer, with_fade = false):
|
||||
if playing_soundtracks.find(music) != -1:
|
||||
playing_soundtracks.remove_at(playing_soundtracks.find(music))
|
||||
set_volume(music, MIN_VOLUME, with_fade)
|
||||
|
||||
func play_music(player : AudioStreamPlayer, with_fade = false):
|
||||
playing_soundtracks.append(player)
|
||||
set_volume(player, get_volume_from_parent(player), 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)
|
||||
|
||||
return fade_tween
|
||||
|
||||
func play_sfx(name : String):
|
||||
var player := %Sfx.find_child(name) as AudioStreamPlayer
|
||||
if player:
|
||||
player.play()
|
||||
else:
|
||||
printerr("Sfx %s not found" % name)
|
||||
func play_ambiance(ambiance_name : String = ""):
|
||||
if playing_ambiance:
|
||||
await set_volume(playing_ambiance, MIN_VOLUME).finished
|
||||
if playing_ambiance:
|
||||
playing_ambiance.stop()
|
||||
reset_volume(playing_ambiance)
|
||||
playing_ambiance = null
|
||||
if ambiance_name:
|
||||
var player := %Ambiance.find_child(ambiance_name) as AudioStreamPlayer
|
||||
if player:
|
||||
playing_ambiance = player
|
||||
player.play()
|
||||
else:
|
||||
printerr("Sfx %s not found" % ambiance_name)
|
||||
|
||||
Reference in New Issue
Block a user