72 lines
2.0 KiB
GDScript
72 lines
2.0 KiB
GDScript
extends VBoxContainer
|
|
|
|
signal changed
|
|
|
|
var has_stage:bool = false:
|
|
set(stage):
|
|
has_stage = stage
|
|
visible = has_stage
|
|
%MusicPreview.playing = has_stage
|
|
|
|
var current_music_decay:float = 0
|
|
|
|
@onready var music_mute_switch: CheckBox = %MuteSoundtrack
|
|
@onready var sfx_mute_switch: CheckBox = %MuteSFX
|
|
@onready var music_slider: Range = %MusicSlider
|
|
@onready var sfx_slider: Range = %SoundSlider
|
|
@onready var speech_slider: Range = %SpeechSlider
|
|
@onready var sum_slider: Range = %SumSlider
|
|
|
|
func _process(delta: float) -> void:
|
|
if current_music_decay > 0:
|
|
current_music_decay -= delta
|
|
if current_music_decay < 0:
|
|
%MusicMixer.play("blend_out")
|
|
|
|
|
|
var has_changed: bool = false:
|
|
set(value):
|
|
has_changed = value
|
|
|
|
func _ready() -> void:
|
|
update_ui_from_state()
|
|
|
|
music_mute_switch.pressed.connect(func(value): State.music_muted = value)
|
|
sfx_mute_switch.pressed.connect(func(value): State.music_muted = value)
|
|
|
|
music_slider.value_changed.connect(
|
|
func(value):
|
|
State.music_volume = value
|
|
current_music_decay = 2
|
|
%MusicMixer.play("blend_in")
|
|
)
|
|
sfx_slider.value_changed.connect(func(value): State.sfx_volume = value)
|
|
speech_slider.value_changed.connect(func(value): State.speech_volume = value)
|
|
sum_slider.value_changed.connect(func(value): State.main_volume = value)
|
|
|
|
changed.connect(func():has_changed = true)
|
|
|
|
%ResetButton.pressed.connect(_on_reset_button_pressed)
|
|
%SaveButton.pressed.connect(_on_exit_button_pressed)
|
|
|
|
|
|
func _on_reset_button_pressed():
|
|
music_mute_switch.button_pressed = false
|
|
sfx_mute_switch.button_pressed = false
|
|
music_slider.value = 1
|
|
sfx_slider.value = 1
|
|
speech_slider.value = 1
|
|
sum_slider.value = 1
|
|
|
|
func update_ui_from_state():
|
|
music_mute_switch.button_pressed = State.sfx_muted
|
|
sfx_mute_switch.button_pressed = State.music_muted
|
|
music_slider.value = State.music_volume
|
|
sfx_slider.value = State.sfx_volume
|
|
speech_slider.value = State.speech_volume
|
|
sum_slider.value = State.main_volume
|
|
|
|
func _on_exit_button_pressed() -> void:
|
|
State.save_settings()
|
|
State.leave_stage(self)
|