Help with saving the screen resolution settings to an .ini file

Godot Version

4.2.1 Stable

Question

Hello comrades! I have a problem - I save the game settings, but I absolutely do not understand how to save the screen resolution setting correctly, and the window mode is also not set… I think I did something stupid.

I load the settings like this:

func _ready():
for r in Resolutions:
%Resolution_option.add_item(r)

#ВИДЕО ПОДГРУЗКА НАСТРОЕК
var video_settings = ConfigHandler.load_video_settings()

%Resolution_option.get_item_text(video_settings.resolution)
%WindowMode_Option.get_item_text(video_settings.fullscreen)

#АУДИО ПОДГРУЗКА НАСТРОЕК
var audio_settings = ConfigHandler.load_audio_settings()

%Music_HScroller.value = min(audio_settings.music, 1.0) * 100
%SFX_HScroller.value = min(audio_settings.sfx, 1.0) * 100

I save it this way:

func _on_resolution_option_item_selected(index):
%ButtonSound.play()
var ID = %Resolution_option.get_item_text(index)
ConfigHandler.save_video_settings(“resolution”, ID)
print(ID)
get_window().set_size(Resolutions[ID])
Centre_Window()

Aaaand I upload this script in singleton, which manages the ini file with the saved settings:

extends Node

var config = ConfigFile.new()
const SETTINGS_FILE_PATH = “user://settings.ini”

func _ready():
if !FileAccess.file_exists(SETTINGS_FILE_PATH):
#Keybinds
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “MoveForward”, “W”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “MoveBackward”, “S”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “MoveRight”, “D”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “MoveLeft”, “A”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “Jump”, “Space”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “Activate”, “F”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “InventoryToggle”, “R”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “Interact”, “E”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “Crouch”, “C”)
config.set_value(“ГОРЯЧИЕ КЛАВИШИ”, “Sprint”, “Shift”)
#Video
config.set_value(“ВИДЕО”,“fullscreen”,1)
config.set_value(“ВИДЕО”,“resolution”, “1920x1080”)
config.set_value(“ВИДЕО”,“quality”, 4)
#Audio
config.set_value(“АУДИО”,“sfx”, 60)
config.set_value(“АУДИО”,“music”, 60)

  config.save(SETTINGS_FILE_PATH)
  print(config," Saved!")

else:
print(config," Loaded!")
config.load(SETTINGS_FILE_PATH)

func save_video_settings(key: String, value):
config.set_value(“ВИДЕО”, key, value)
config.save(SETTINGS_FILE_PATH)

func load_video_settings():
var video_settings = {}
for key in config.get_section_keys(“ВИДЕО”):
video_settings[key] = config.get_value(“ВИДЕО”, key)
return video_settings

func save_audio_settings(key: String, value):
config.set_value(“АУДИО”, key, value)
config.save(SETTINGS_FILE_PATH)

func load_audio_settings():
var audio_settings = {}
for key in config.get_section_keys(“АУДИО”):
audio_settings[key] = config.get_value(“АУДИО”, key)
return audio_settings

And yes… Mistake

Invalid call. Nonexistent function ‘get_item’ in base ‘OptionButton’.

i fixed it

Wonderful!

Don’t forget to mark this as solved. :grinning:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.