Added audio settings saving
This commit is contained in:
@@ -85,8 +85,6 @@ func _process_to_next_area() -> void:
|
|||||||
SaveManager.game_data.current_stage_index = 0
|
SaveManager.game_data.current_stage_index = 0
|
||||||
SaveManager.game_data.current_sector_index = 0
|
SaveManager.game_data.current_sector_index = 0
|
||||||
|
|
||||||
print(SaveManager.game_data.current_area_index)
|
|
||||||
|
|
||||||
if SaveManager.game_data.current_area_index >= world_data.areas.size():
|
if SaveManager.game_data.current_area_index >= world_data.areas.size():
|
||||||
SaveManager.delete_game_data()
|
SaveManager.delete_game_data()
|
||||||
victory_screen.show()
|
victory_screen.show()
|
||||||
|
|||||||
@@ -90,7 +90,6 @@ func _set_player_values() -> void:
|
|||||||
var weapon_ids : Array[String] = []
|
var weapon_ids : Array[String] = []
|
||||||
for weapon in player_data.weapons:
|
for weapon in player_data.weapons:
|
||||||
weapon_ids.append(weapon.id)
|
weapon_ids.append(weapon.id)
|
||||||
|
|
||||||
|
|
||||||
_save_file.set_value(CATEGORY_PLAYER, PLAYER_WEAPONS, weapon_ids)
|
_save_file.set_value(CATEGORY_PLAYER, PLAYER_WEAPONS, weapon_ids)
|
||||||
_save_file.set_value(CATEGORY_PLAYER, PLAYER_HULL, player_data.hull)
|
_save_file.set_value(CATEGORY_PLAYER, PLAYER_HULL, player_data.hull)
|
||||||
|
|||||||
@@ -7,13 +7,18 @@ const BASE_SIZE = Vector2i(640, 360)
|
|||||||
const CATEGORY_VIDEO = "video"
|
const CATEGORY_VIDEO = "video"
|
||||||
const SETTING_FULLSCREEN = "fullscreen"
|
const SETTING_FULLSCREEN = "fullscreen"
|
||||||
const SETTING_WINDOW_FACTOR = "window_factor"
|
const SETTING_WINDOW_FACTOR = "window_factor"
|
||||||
|
const CATEGORY_AUDIO = "audio"
|
||||||
|
const SETTING_MASTER_VOLUME = "master_volume"
|
||||||
|
const SETTING_UI_VOLUME = "ui_volume"
|
||||||
|
const SETTING_SFX_VOLUME = "sfx_volume"
|
||||||
|
const SETTING_MUSIC_VOLUME = "music_volume"
|
||||||
|
|
||||||
|
|
||||||
var _config: ConfigFile
|
var _config: ConfigFile
|
||||||
|
|
||||||
var _fullscreen := false
|
var _fullscreen := false
|
||||||
var fullscreen : bool:
|
var fullscreen : bool:
|
||||||
get:
|
get():
|
||||||
return _fullscreen
|
return _fullscreen
|
||||||
set(value):
|
set(value):
|
||||||
_fullscreen = value
|
_fullscreen = value
|
||||||
@@ -22,13 +27,49 @@ var fullscreen : bool:
|
|||||||
|
|
||||||
var _window_factor := 1
|
var _window_factor := 1
|
||||||
var window_factor : int:
|
var window_factor : int:
|
||||||
get:
|
get():
|
||||||
return _window_factor
|
return _window_factor
|
||||||
set(value):
|
set(value):
|
||||||
_window_factor = value
|
_window_factor = clampi(value, 1, 5)
|
||||||
_apply_video_settings()
|
_apply_video_settings()
|
||||||
_save_settings()
|
_save_settings()
|
||||||
|
|
||||||
|
var _master_volume := 100
|
||||||
|
var master_volume : int:
|
||||||
|
get():
|
||||||
|
return _master_volume
|
||||||
|
set(value):
|
||||||
|
_master_volume = clampi(value, 0, 100)
|
||||||
|
_apply_audio_settings()
|
||||||
|
_save_settings()
|
||||||
|
|
||||||
|
var _ui_volume := 100
|
||||||
|
var ui_volume : int:
|
||||||
|
get():
|
||||||
|
return _ui_volume
|
||||||
|
set(value):
|
||||||
|
_ui_volume = clampi(value, 0, 100)
|
||||||
|
_apply_audio_settings()
|
||||||
|
_save_settings()
|
||||||
|
|
||||||
|
var _sfx_volume := 100
|
||||||
|
var sfx_volume : int:
|
||||||
|
get():
|
||||||
|
return _sfx_volume
|
||||||
|
set(value):
|
||||||
|
_sfx_volume = clampi(value, 0, 100)
|
||||||
|
_apply_audio_settings()
|
||||||
|
_save_settings()
|
||||||
|
|
||||||
|
var _music_volume := 100
|
||||||
|
var music_volume : int:
|
||||||
|
get():
|
||||||
|
return _music_volume
|
||||||
|
set(value):
|
||||||
|
_music_volume = clampi(value, 0, 100)
|
||||||
|
_apply_audio_settings()
|
||||||
|
_save_settings()
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
_config = ConfigFile.new()
|
_config = ConfigFile.new()
|
||||||
@@ -39,9 +80,14 @@ func _ready() -> void:
|
|||||||
|
|
||||||
func _load_settings() -> void:
|
func _load_settings() -> void:
|
||||||
if _config.load(CONFIG_FILE) == OK:
|
if _config.load(CONFIG_FILE) == OK:
|
||||||
_fullscreen = _config.get_value(CATEGORY_VIDEO, SETTING_FULLSCREEN, false)
|
_fullscreen = _config.get_value(CATEGORY_VIDEO, SETTING_FULLSCREEN, _fullscreen)
|
||||||
_window_factor = _config.get_value(CATEGORY_VIDEO, SETTING_WINDOW_FACTOR, 0)
|
_window_factor = _config.get_value(CATEGORY_VIDEO, SETTING_WINDOW_FACTOR, _window_factor)
|
||||||
|
|
||||||
|
_master_volume = _config.get_value(CATEGORY_AUDIO, SETTING_MASTER_VOLUME, _master_volume)
|
||||||
|
_ui_volume = _config.get_value(CATEGORY_AUDIO, SETTING_UI_VOLUME, _ui_volume)
|
||||||
|
_sfx_volume = _config.get_value(CATEGORY_AUDIO, SETTING_SFX_VOLUME, _sfx_volume)
|
||||||
|
_music_volume = _config.get_value(CATEGORY_AUDIO, SETTING_MUSIC_VOLUME, _music_volume)
|
||||||
|
|
||||||
_save_settings()
|
_save_settings()
|
||||||
|
|
||||||
|
|
||||||
@@ -52,11 +98,17 @@ func _save_settings() -> void:
|
|||||||
_config.set_value(CATEGORY_VIDEO, SETTING_FULLSCREEN, _fullscreen)
|
_config.set_value(CATEGORY_VIDEO, SETTING_FULLSCREEN, _fullscreen)
|
||||||
_config.set_value(CATEGORY_VIDEO, SETTING_WINDOW_FACTOR, _window_factor)
|
_config.set_value(CATEGORY_VIDEO, SETTING_WINDOW_FACTOR, _window_factor)
|
||||||
|
|
||||||
|
_config.set_value(CATEGORY_AUDIO, SETTING_MASTER_VOLUME, _master_volume)
|
||||||
|
_config.set_value(CATEGORY_AUDIO, SETTING_UI_VOLUME, _ui_volume)
|
||||||
|
_config.set_value(CATEGORY_AUDIO, SETTING_SFX_VOLUME, _sfx_volume)
|
||||||
|
_config.set_value(CATEGORY_AUDIO, SETTING_MUSIC_VOLUME, _music_volume)
|
||||||
|
|
||||||
_config.save(CONFIG_FILE)
|
_config.save(CONFIG_FILE)
|
||||||
|
|
||||||
|
|
||||||
func _apply_all_settings() -> void:
|
func _apply_all_settings() -> void:
|
||||||
_apply_video_settings()
|
_apply_video_settings()
|
||||||
|
_apply_audio_settings()
|
||||||
|
|
||||||
|
|
||||||
func _apply_video_settings() -> void:
|
func _apply_video_settings() -> void:
|
||||||
@@ -67,6 +119,13 @@ func _apply_video_settings() -> void:
|
|||||||
_apply_window_scale()
|
_apply_window_scale()
|
||||||
|
|
||||||
|
|
||||||
|
func _apply_audio_settings() -> void:
|
||||||
|
AudioServer.set_bus_volume_linear(AudioServer.get_bus_index("Master"), _master_volume/100.0)
|
||||||
|
AudioServer.set_bus_volume_linear(AudioServer.get_bus_index("UI"), _ui_volume/100.0)
|
||||||
|
AudioServer.set_bus_volume_linear(AudioServer.get_bus_index("SFX"), _sfx_volume/100.0)
|
||||||
|
AudioServer.set_bus_volume_linear(AudioServer.get_bus_index("Music"), _music_volume/100.0)
|
||||||
|
|
||||||
|
|
||||||
func _apply_window_scale() -> void:
|
func _apply_window_scale() -> void:
|
||||||
if _fullscreen: return
|
if _fullscreen: return
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ signal back
|
|||||||
@onready var credits_button : Button = $%CreditsButton
|
@onready var credits_button : Button = $%CreditsButton
|
||||||
@onready var back_button : Button = $%BackButton
|
@onready var back_button : Button = $%BackButton
|
||||||
@onready var master_slider : Slider = $%MasterSlider
|
@onready var master_slider : Slider = $%MasterSlider
|
||||||
@onready var menu_slider : Slider = $%MenuSlider
|
@onready var ui_slider : Slider = $%UISlider
|
||||||
@onready var sfx_slider : Slider = $%SFXSlider
|
@onready var sfx_slider : Slider = $%SFXSlider
|
||||||
@onready var music_slider : Slider = $%MusicSlider
|
@onready var music_slider : Slider = $%MusicSlider
|
||||||
|
|
||||||
@@ -52,17 +52,19 @@ func _setup_neighbors() -> void:
|
|||||||
|
|
||||||
|
|
||||||
func _load_current_settings() -> void:
|
func _load_current_settings() -> void:
|
||||||
print(SettingsManager.window_factor)
|
|
||||||
fullscreen_button.button_pressed = SettingsManager.fullscreen
|
fullscreen_button.button_pressed = SettingsManager.fullscreen
|
||||||
for child in window_factor_buttons.get_children():
|
for child in window_factor_buttons.get_children():
|
||||||
if child is Button:
|
if child is Button:
|
||||||
var button : Button = child
|
var button : Button = child
|
||||||
var window_factor : int = button.get_meta(WINDOW_FACTOR, 0)
|
var window_factor : int = button.get_meta(WINDOW_FACTOR, 0)
|
||||||
print(window_factor)
|
|
||||||
if window_factor == SettingsManager.window_factor:
|
if window_factor == SettingsManager.window_factor:
|
||||||
button.button_pressed = true
|
button.button_pressed = true
|
||||||
print(button)
|
|
||||||
_update_window_factor_disabled()
|
_update_window_factor_disabled()
|
||||||
|
|
||||||
|
master_slider.value = SettingsManager.master_volume
|
||||||
|
ui_slider.value = SettingsManager.ui_volume
|
||||||
|
sfx_slider.value = SettingsManager.sfx_volume
|
||||||
|
music_slider.value = SettingsManager.music_volume
|
||||||
|
|
||||||
|
|
||||||
func _update_window_factor_disabled() -> void:
|
func _update_window_factor_disabled() -> void:
|
||||||
@@ -88,3 +90,19 @@ func _on_window_factor_button_pressed(button: Button) -> void:
|
|||||||
var window_factor : int = button.get_meta(WINDOW_FACTOR, 0)
|
var window_factor : int = button.get_meta(WINDOW_FACTOR, 0)
|
||||||
if window_factor > 0:
|
if window_factor > 0:
|
||||||
SettingsManager.window_factor = window_factor
|
SettingsManager.window_factor = window_factor
|
||||||
|
|
||||||
|
|
||||||
|
func _on_master_volume_changed(value: float) -> void:
|
||||||
|
SettingsManager.master_volume = floor(value)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_ui_volume_changed(value: float) -> void:
|
||||||
|
SettingsManager.ui_volume = floor(value)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_sfx_volume_changed(value: float) -> void:
|
||||||
|
SettingsManager.sfx_volume = floor(value)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_music_volume_changed(value: float) -> void:
|
||||||
|
SettingsManager.music_volume = floor(value)
|
||||||
|
|||||||
@@ -119,11 +119,11 @@ value = 100.0
|
|||||||
rounded = true
|
rounded = true
|
||||||
scrollable = false
|
scrollable = false
|
||||||
|
|
||||||
[node name="MenuLabel" type="Label" parent="MarginContainer/ScrollContainer/MarginContainer/OptionsGridContainer"]
|
[node name="UILabel" type="Label" parent="MarginContainer/ScrollContainer/MarginContainer/OptionsGridContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Menu Volume"
|
text = "UI Volume"
|
||||||
|
|
||||||
[node name="MenuSlider" type="HSlider" parent="MarginContainer/ScrollContainer/MarginContainer/OptionsGridContainer"]
|
[node name="UISlider" type="HSlider" parent="MarginContainer/ScrollContainer/MarginContainer/OptionsGridContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
custom_minimum_size = Vector2(100, 0)
|
custom_minimum_size = Vector2(100, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
@@ -190,5 +190,9 @@ alignment = 1
|
|||||||
|
|
||||||
[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
|
[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
|
||||||
[connection signal="toggled" from="MarginContainer/ScrollContainer/MarginContainer/OptionsGridContainer/FullscreenCheckButton" to="." method="_on_fullscreen_check_button_toggled"]
|
[connection signal="toggled" from="MarginContainer/ScrollContainer/MarginContainer/OptionsGridContainer/FullscreenCheckButton" to="." method="_on_fullscreen_check_button_toggled"]
|
||||||
|
[connection signal="value_changed" from="MarginContainer/ScrollContainer/MarginContainer/OptionsGridContainer/MasterSlider" to="." method="_on_master_volume_changed"]
|
||||||
|
[connection signal="value_changed" from="MarginContainer/ScrollContainer/MarginContainer/OptionsGridContainer/UISlider" to="." method="_on_ui_volume_changed"]
|
||||||
|
[connection signal="value_changed" from="MarginContainer/ScrollContainer/MarginContainer/OptionsGridContainer/SFXSlider" to="." method="_on_sfx_volume_changed"]
|
||||||
|
[connection signal="value_changed" from="MarginContainer/ScrollContainer/MarginContainer/OptionsGridContainer/MusicSlider" to="." method="_on_music_volume_changed"]
|
||||||
[connection signal="pressed" from="MarginContainer/HBoxContainer/CreditsButton" to="." method="_on_credits_button_pressed"]
|
[connection signal="pressed" from="MarginContainer/HBoxContainer/CreditsButton" to="." method="_on_credits_button_pressed"]
|
||||||
[connection signal="pressed" from="MarginContainer/HBoxContainer/BackButton" to="." method="_on_back_button_pressed"]
|
[connection signal="pressed" from="MarginContainer/HBoxContainer/BackButton" to="." method="_on_back_button_pressed"]
|
||||||
|
|||||||
Reference in New Issue
Block a user