Skip to content

Commit a54a71d

Browse files
committed
Config system now uses JSON
1 parent 34c82c1 commit a54a71d

File tree

4 files changed

+65
-39
lines changed

4 files changed

+65
-39
lines changed

Scripts/Options Window Scripts/ConfigManager.gd

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,38 +25,38 @@ extends Node
2525
@export var redguardPathLineEdit: LineEdit
2626

2727

28-
var config = ConfigFile.new()
28+
var config
2929

3030

3131
func _on_options_window_about_to_popup():
32-
_load_config_and_set_values()
32+
load_config_and_set_values()
3333

3434

35-
func _load_config_and_set_values():
35+
func load_config_and_set_values():
3636

3737
%ConfigLoader.load_config()
3838

3939
# DISPLAY CATEGORY GETTERS
40-
windowModeDropdown.selected = config.get_value("Display", "windowMode")
41-
vsyncCheckbox.button_pressed = config.get_value("Display", "vsync")
42-
limitFPSCheckbox.button_pressed = config.get_value("Display", "limitFPS")
43-
maxFPSSpinbox.value = config.get_value("Display", "maxFPS")
40+
windowModeDropdown.selected = config.windowMode
41+
vsyncCheckbox.button_pressed = config.vsync
42+
limitFPSCheckbox.button_pressed = config.limitFPS
43+
maxFPSSpinbox.value = config.maxFPS
4444

4545
# GRAPHICS CATEGORY GETTERS
46-
antiAliasingCheckbox.button_pressed = config.get_value("Graphics", "antiAliasing")
47-
shadowsCheckbox.button_pressed = config.get_value("Graphics", "shadows")
46+
antiAliasingCheckbox.button_pressed = config.antiAliasing
47+
shadowsCheckbox.button_pressed = config.shadows
4848

4949
# AUDIO CATEGORY GETTERS
50-
musicSlider.value = config.get_value("Audio", "music")
51-
effectsSlider.value = config.get_value("Audio", "effects")
52-
voicesSlider.value = config.get_value("Audio", "voices")
50+
musicSlider.value = config.music
51+
effectsSlider.value = config.effects
52+
voicesSlider.value = config.voices
5353

5454
# GAMEPLAY CATEGORY GETTERS
55-
subtitlesCheckbox.button_pressed = config.get_value("Gameplay", "subtitles")
56-
autodefendCheckbox.button_pressed = config.get_value("Gameplay", "autoDefend")
55+
subtitlesCheckbox.button_pressed = config.subtitles
56+
autodefendCheckbox.button_pressed = config.autoDefend
5757

5858
# FILEPATHS CATEGORY GETTERS
59-
redguardPathLineEdit.text = config.get_value("FilePaths", "redguardPath")
59+
redguardPathLineEdit.text = config.redguardPath
6060

6161
%DependencyManager.update_vsync_dependencies()
6262
%DependencyManager.update_fpslimit_dependencies()
@@ -65,25 +65,25 @@ func _load_config_and_set_values():
6565
func set_values_and_save_config():
6666

6767
# DISPLAY CATEGORY SETTERS
68-
config.set_value("Display", "windowMode", windowModeDropdown.selected)
69-
config.set_value("Display", "vsync", vsyncCheckbox.button_pressed)
70-
config.set_value("Display", "limitFPS", limitFPSCheckbox.button_pressed)
71-
config.set_value("Display", "maxFPS", int(maxFPSSpinbox.value))
68+
config.windowMode = windowModeDropdown.selected
69+
config.vsync = vsyncCheckbox.button_pressed
70+
config.limitFPS = limitFPSCheckbox.button_pressed
71+
config.maxFPS = int(maxFPSSpinbox.value)
7272

7373
# GRAPHICS CATEGORY SETTERS
74-
config.set_value("Graphics", "antiAliasing", antiAliasingCheckbox.button_pressed)
75-
config.set_value("Graphics", "shadows", shadowsCheckbox.button_pressed)
74+
config.antiAliasing = antiAliasingCheckbox.button_pressed
75+
config.shadows = shadowsCheckbox.button_pressed
7676

7777
# AUDIO CATEGORY SETTERS
78-
config.set_value("Audio", "music", int(musicSlider.value))
79-
config.set_value("Audio", "effects", int(effectsSlider.value))
80-
config.set_value("Audio", "voices", int(voicesSlider.value))
78+
config.music = int(musicSlider.value)
79+
config.effects = int(effectsSlider.value)
80+
config.voices = int(voicesSlider.value)
8181

8282
# GAMEPLAY CATEGORY SETTERS
83-
config.set_value("Gameplay", "subtitles", subtitlesCheckbox.button_pressed)
84-
config.set_value("Gameplay", "autoDefend", autodefendCheckbox.button_pressed)
83+
config.subtitles = subtitlesCheckbox.button_pressed
84+
config.autoDefend = autodefendCheckbox.button_pressed
8585

8686
# FILEPATHS CATEGORY SETTERS
87-
config.set_value("FilePaths", "redguardPath", redguardPathLineEdit.text)
87+
config.redguardPath = redguardPathLineEdit.text
8888

8989
%ConfigSaver.save_config()
Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,22 @@
11
extends Node
22

33
# These crate the path for the new file in /LocalLow
4-
var drive = OS.get_environment("windir").rstrip("WINDOWS")
5-
var user = OS.get_environment("USERNAME")
6-
var path = drive + "/users/" + user + "/APPDATA/LOCALLOW/RGUnity/RedguardUnity/Config.cfg"
4+
var windowsDrive = OS.get_environment("windir").rstrip("WINDOWS")
5+
var username = OS.get_environment("USERNAME")
6+
var configPath = windowsDrive + "/users/" + username + "/APPDATA/LOCALLOW/RGUnity/RedguardUnity/Config.json"
77

88
func load_config():
9-
if %ConfigManager.config.load(path) == OK:
10-
print ("Config loaded Successfully: ", path)
9+
if FileAccess.file_exists(configPath):
10+
11+
var jsonString = FileAccess.get_file_as_string(configPath)
12+
%ConfigManager.config = JSON.parse_string(jsonString)
13+
14+
# Apparently we can just load data from this json string
15+
# for example like this:
16+
17+
# var test = JSON.parse_string(jsonString).maxFPS
18+
# print("Config Found with version " + str(test))
19+
1120
else:
21+
print ("Restoring Default config")
1222
%DefaultConfigLoader.restore_default_config()
Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
extends Node
22

3+
var defaultConfigPath = OS.get_executable_path().get_base_dir() + "/RedguardUnity_Data/StreamingAssets/Config_default.json"
4+
35
func restore_default_config():
4-
%ConfigManager.config.load("res://Config_Default.cfg")
5-
%ConfigSaver.save_config()
6+
7+
if FileAccess.file_exists(defaultConfigPath):
8+
print("Default File found")
9+
var jsonString = FileAccess.get_file_as_string(defaultConfigPath)
10+
11+
%ConfigManager.config = JSON.parse_string(jsonString)
12+
# Save the file
13+
%ConfigSaver.save_config()
14+
# set the UI elements
15+
%ConfigManager.load_config_and_set_values()
16+
else:
17+
print("Default config can only be restored in build")
18+
Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
extends Node
22

33
# These crate the path for the new file in /LocalLow
4-
var drive = OS.get_environment("windir").rstrip("WINDOWS")
5-
var user = OS.get_environment("USERNAME")
6-
var path = drive + "/users/" + user + "/APPDATA/LOCALLOW/RGUnity/RedguardUnity/Config.cfg"
4+
var windowsDrive = OS.get_environment("windir").rstrip("WINDOWS")
5+
var username = OS.get_environment("USERNAME")
6+
var configPath = windowsDrive + "/users/" + username + "/APPDATA/LOCALLOW/RGUnity/RedguardUnity/Config.json"
77

88
func save_config():
9-
%ConfigManager.config.save(path)
10-
print("Config saved to ", path)
9+
var configFile = FileAccess.open(configPath, FileAccess.WRITE)
10+
print(%ConfigManager.config)
11+
configFile.store_string(JSON.stringify(%ConfigManager.config))
12+
13+
print("Config saved to ", configPath)

0 commit comments

Comments
 (0)