aboutsummaryrefslogtreecommitdiff
path: root/client/global.gd
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2024-09-02 00:34:06 +0200
committertpart <tpart120@proton.me>2024-09-02 00:34:13 +0200
commite864abcf6469c877087e53525de632b89546659d (patch)
tree87039b2e5556c64e0b2da95f23152dcc49dbd790 /client/global.gd
parenteb7fa5392997ac5c165d1ae011e57a1b7fcac084 (diff)
downloadhurrycurry-e864abcf6469c877087e53525de632b89546659d.tar
hurrycurry-e864abcf6469c877087e53525de632b89546659d.tar.bz2
hurrycurry-e864abcf6469c877087e53525de632b89546659d.tar.zst
Add input settings UI
Diffstat (limited to 'client/global.gd')
-rw-r--r--client/global.gd26
1 files changed, 15 insertions, 11 deletions
diff --git a/client/global.gd b/client/global.gd
index 942ff3cf..e9bd1954 100644
--- a/client/global.gd
+++ b/client/global.gd
@@ -43,7 +43,7 @@ var languages := language_array()
var using_joypad := false
var using_touch := false
-var default_settings := [
+@onready var default_settings := [
SettingsCategory.new(tr("Gameplay"), "gameplay", {
"touch_controls": DropdownSetting.new(tr("Enable touch screen controls"), 0, [tr("Automatic"), tr("Enabled"), tr("Disabled")]),
"interpolate_camera_rotation": ToggleSetting.new(tr("Smooth camera rotation"), true),
@@ -53,11 +53,6 @@ var default_settings := [
"tutorial_started": ToggleSetting.new(tr("Tutorial started"), false),
"latch_boost": ToggleSetting.new(tr("Always extend boost to maximum duration"), true),
}),
- SettingsCategory.new(tr("User interface"), "ui", {
- "language": DropdownSetting.new(tr("Language"), 0, languages.map(func(e): return e[1])),
- "ui_scale_mode": DropdownSetting.new(tr("UI scale mode"), 0, [tr("Resize"), tr("Disabled")]),
- "ui_scale_factor": RangeSetting.new(tr("UI scale factor"), 1. if not on_mobile() else 1.5, 0.5, 1.5, 3),
- }),
SettingsCategory.new(tr("Graphics"), "graphics", {
"fullscreen": DropdownSetting.new(tr("Fullscreen"), 0, [tr("Keep"), tr("Always"), tr("Never")]),
"aa": DropdownSetting.new(tr("Anti-aliasing"), 2 if on_high_end() else 0, [tr("Disabled"), "FXAA", "MSAA 2x", "MSAA 4x"]),
@@ -108,6 +103,14 @@ var default_settings := [
"music_volume": RangeSetting.new(tr("Music Volume"), 0, -30, 0),
"sfx_volume": RangeSetting.new(tr("SFX Volume"), 0, -30, 0),
}),
+ SettingsCategory.new(tr("User interface"), "ui", {
+ "language": DropdownSetting.new(tr("Language"), 0, languages.map(func(e): return e[1])),
+ "ui_scale_mode": DropdownSetting.new(tr("UI scale mode"), 0, [tr("Resize"), tr("Disabled")]),
+ "ui_scale_factor": RangeSetting.new(tr("UI scale factor"), 1. if not on_mobile() else 1.5, 0.5, 1.5, 3),
+ }),
+ SettingsCategory.new(tr("Controls"), "input",
+ InputManager.input_map_to_settings_dictionary(InputManager.default_input_map)
+ ),
SettingsCategory.new(tr("Other"), "other", {
"server_binary": TextSetting.new(tr("Server binary (leave empty to search PATH)"), "", tr("Enter path")),
"server_data": TextSetting.new(tr("Server data directory (leave empty to auto-detect)"), "", tr("Enter path")),
@@ -255,7 +258,8 @@ func save_settings():
func save_dict(path: String, dict: Dictionary):
var f = FileAccess.open(path, FileAccess.WRITE)
- f.store_var(dict.duplicate(true))
+ var to_save = dict.duplicate(true)
+ f.store_var(to_save, true)
func load_dict(path: String, default: Dictionary) -> Dictionary:
# TOCTOU here. Godot docs says its fine.
@@ -263,7 +267,7 @@ func load_dict(path: String, default: Dictionary) -> Dictionary:
print("Skip profile load")
return default
var f = FileAccess.open(path, FileAccess.READ)
- var saved_dict = f.get_var()
+ var saved_dict = f.get_var(true)
if saved_dict != null and saved_dict is Dictionary:
add_missing_keys(saved_dict, default)
@@ -271,7 +275,7 @@ func load_dict(path: String, default: Dictionary) -> Dictionary:
return saved_dict
func load_settings(path: String):
- for category: SettingsCategory in default_settings:
+ for category: SettingsCategory in default_settings.duplicate(true):
for k: String in category.settings.keys():
settings[k] = category.settings[k]
@@ -279,8 +283,8 @@ func load_settings(path: String):
print("Skip settings load")
return
var f = FileAccess.open(path, FileAccess.READ)
- var saved_dict = f.get_var()
-
+ var saved_dict = f.get_var(true)
+
if saved_dict != null and saved_dict is Dictionary:
for k in settings.keys():
if saved_dict.has(k) and typeof(settings[k].get_value()) == typeof(saved_dict[k]):