1
Fork 0
mirror of https://github.com/RYGhub/the-cold-night.git synced 2025-04-01 21:20:37 +00:00
the-cold-night/src/levels/Music.gd
2022-04-05 02:41:13 +02:00

75 lines
2 KiB
GDScript

extends Node
class_name Music
export var choir_min: float = 10
export var choir_max: float = 60
export var bell_min: float = 40
export var bell_max: float = 100
export var drum_min: float = 100
export var drum_max: float = 160
export var crackle_min: float = 0
export var crackle_max: float = 170
export var muted: bool setget set_mute, get_mute
func set_mute(value):
var index = AudioServer.get_bus_index("Master")
AudioServer.set_bus_mute(index, value)
func get_mute():
var index = AudioServer.get_bus_index("Master")
return AudioServer.is_bus_mute(index)
func update_state():
$Choir.bus = "Master" if $Choir.volume_db > -60 else "Mute"
$Bell.bus = "Master" if $Bell.volume_db > -60 else "Mute"
$Drum.bus = "Master" if $Drum.volume_db > -60 else "Mute"
$BossDrum.bus = "Master" if $BossDrum.volume_db > -60 else "Mute"
$BossGuitar.bus = "Master" if $BossGuitar.volume_db > -60 else "Mute"
$FireCrackle.bus = "Master" if $FireCrackle.volume_db > -60 else "Mute"
func _on_Fire_intensity_changed(_origin, value):
$Choir.volume_db = (smoothstep(choir_min, choir_max, value) - 1) * 60
$Bell.volume_db = (smoothstep(bell_min, bell_max, value) - 1) * 60
$Drum.volume_db = (smoothstep(drum_min, drum_max, value) - 1) * 60
$FireCrackle.volume_db = (smoothstep(crackle_min, crackle_max, value) - 1) * 60
update_state()
func _on_MuteButton_toggled(button_pressed):
set_mute(button_pressed)
func _on_Game_started_main_menu(_origin):
$Wind.play()
$Wind.volume_db = 0
$Wind.bus = "Master"
$FireCrackle.play()
$FireCrackle.volume_db = 0
$FireCrackle.bus = "Master"
func _on_Game_started_phase_one(_origin):
$Wind.stop()
$FireCrackle.stop()
$Choir.play()
$Bell.play()
$Drum.play()
$BossDrum.play()
$BossGuitar.play()
$FireCrackle.play()
$FireCrackle.volume_db = -60
update_state()
func _on_Game_started_bad_ending(_origin):
$Choir.stop()
$Bell.stop()
$Drum.stop()
$BossDrum.stop()
$BossGuitar.stop()
$FireCrackle.stop()
$Wind.play()
$Wind.volume_db = 0
$Wind.bus = "Master"