Mostly music
This commit is contained in:
@ -16,6 +16,12 @@ var resolutions = [
|
||||
@onready var resolution_button: OptionButton = $"TabContainer/Screen & Video/VBoxContainer/HBoxContainer/OptionButton"
|
||||
@onready var display_mode: OptionButton = $"TabContainer/Screen & Video/VBoxContainer/HBoxContainer2/OptionButton"
|
||||
|
||||
@onready var master_volume: HSlider = $"TabContainer/Music & Sound/VBoxContainer/HBoxContainer/HSlider"
|
||||
@onready var music_volume: HSlider = $"TabContainer/Music & Sound/VBoxContainer/HBoxContainer2/HSlider"
|
||||
@onready var sfx_volume: HSlider = $"TabContainer/Music & Sound/VBoxContainer/HBoxContainer3/HSlider"
|
||||
|
||||
|
||||
|
||||
func _ready():
|
||||
# Populate resolution selector
|
||||
for res in resolutions:
|
||||
@ -35,7 +41,8 @@ func _ready():
|
||||
display_mode.select(0)
|
||||
resolution_button.select(2)
|
||||
resolution_button.disabled = false
|
||||
|
||||
load_settings()
|
||||
|
||||
func _on_display_mode_selected(index):
|
||||
var mode_name = display_mode.get_item_text(index)
|
||||
match mode_name:
|
||||
@ -65,5 +72,50 @@ func _set_screen_size(size: Vector2i):
|
||||
DisplayServer.window_set_size(size)
|
||||
# Optionally center or reposition window if desired
|
||||
|
||||
func save_settings():
|
||||
var config = ConfigFile.new()
|
||||
|
||||
# Save resolution details
|
||||
var res = resolutions[resolution_button.selected]
|
||||
config.set_value("screen", "width", res.x)
|
||||
config.set_value("screen", "height", res.y)
|
||||
|
||||
# Save display mode
|
||||
config.set_value("screen", "mode", display_mode.get_selected_id()) # 0=Windowed, 1=Fullscreen, 2=Borderless
|
||||
|
||||
# Save music module volumes
|
||||
config.set_value("audio", "master_volume", master_volume.value)
|
||||
config.set_value("audio", "music_volume", music_volume.value)
|
||||
config.set_value("audio", "sfx_volume", sfx_volume.value)
|
||||
|
||||
var err = config.save("user://settings.cfg")
|
||||
|
||||
func load_settings():
|
||||
var config = ConfigFile.new()
|
||||
var err = config.load("user://settings.cfg")
|
||||
|
||||
if err == OK:
|
||||
# Load resolution
|
||||
var width = config.get_value("screen", "width", -1)
|
||||
var height = config.get_value("screen", "height", -1)
|
||||
if width != -1 and height != -1:
|
||||
for i in range(resolutions.size()):
|
||||
if resolutions[i].x == width and resolutions[i].y == height:
|
||||
resolution_button.select(i)
|
||||
break
|
||||
|
||||
# Load display mode and apply it
|
||||
var mode = config.get_value("screen", "mode", 0)
|
||||
display_mode.select(mode)
|
||||
_on_display_mode_selected(mode) # apply display mode and resolution
|
||||
|
||||
# Load audio volumes
|
||||
master_volume.value = config.get_value("audio", "master_volume", master_volume.value)
|
||||
music_volume.value = config.get_value("audio", "music_volume", music_volume.value)
|
||||
sfx_volume.value = config.get_value("audio", "sfx_volume", sfx_volume.value)
|
||||
else:
|
||||
print("No previous settings found or failed to load.")
|
||||
|
||||
func _on_button_pressed() -> void:
|
||||
save_settings()
|
||||
get_tree().change_scene_to_file("res://Game/Menu/main.tscn")
|
||||
|
Reference in New Issue
Block a user