diff options
author | metamuffin <metamuffin@disroot.org> | 2024-06-29 20:41:23 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-29 20:41:23 +0200 |
commit | c1a65adf8aecaa56ee3a7495d5eb59bcce694d93 (patch) | |
tree | c7127df6af7e4943f0c85eab97e79a7f3f8e2873 /client | |
parent | 3ac2dc4abaeedea61c3a60bd5c4ae11166d8b188 (diff) | |
parent | c06d39a894906c17bd04be6281da9d2e2bb08838 (diff) | |
download | hurrycurry-c1a65adf8aecaa56ee3a7495d5eb59bcce694d93.tar hurrycurry-c1a65adf8aecaa56ee3a7495d5eb59bcce694d93.tar.bz2 hurrycurry-c1a65adf8aecaa56ee3a7495d5eb59bcce694d93.tar.zst |
Merge branch 'master' of https://codeberg.org/metamuffin/undercooked
Diffstat (limited to 'client')
-rw-r--r-- | client/global.gd | 24 | ||||
-rw-r--r-- | client/map/tiles/grass_generation.gd | 2 | ||||
-rw-r--r-- | client/menu/settings_row.gd | 8 |
3 files changed, 27 insertions, 7 deletions
diff --git a/client/global.gd b/client/global.gd index 35244fa7..da1d8515 100644 --- a/client/global.gd +++ b/client/global.gd @@ -18,10 +18,11 @@ extends Node # Each setting contains a dictionary with the following keys: -# "type": The type of the setting. Can be "toggle", "line", "dropdown", or "dropdown_preset" +# "type": The type of the setting. Can be "toggle", "line", "range", "dropdown", or "dropdown_preset" # "value": The value of the setting. When using "dropdown", this contains an int # as the index for the respecitve element in the "options" array. # "apply": Only for type "dropdown_preset": A dictionary to override all other settings. +# "min" and "max": Only for type "range": The min and max values. # "description": The setting name displayed in the settings menu. # (Optional: Only when type = "dropdown") "options": An array which contains all # possible values. @@ -64,6 +65,13 @@ var default_settings := { "type": "toggle", "value": false, "description": tr("Use SDFGI (Doesn't block the game but is more resource-hungry)") + }, + "grass_amount": { + "type": "range", + "value": 16, + "min": 0, + "max": 32, + "description": tr("3D grass amount per grass tile") } } @@ -71,22 +79,26 @@ const GRAPHICS_PRESETS = [ # Low: { "voxel_gi": false, - "sdfgi": false + "sdfgi": false, + "grass_amount": 0 }, # Medium: { "voxel_gi": false, - "sdfgi": false + "sdfgi": false, + "grass_amount": 16 }, # High: { "voxel_gi": false, - "sdfgi": true + "sdfgi": true, + "grass_amount": 16 }, # Ultra: { "voxel_gi": true, - "sdfgi": false + "sdfgi": false, + "grass_amount": 24 } ] @@ -143,7 +155,7 @@ func focus_first_button(node: Node) -> bool: func add_missing_keys(dict: Dictionary, reference: Dictionary): for k in reference.keys(): if !dict.has(k): - dict[k] = reference + dict[k] = reference[k] else: if dict[k] is Dictionary: add_missing_keys(dict[k], reference[k]) diff --git a/client/map/tiles/grass_generation.gd b/client/map/tiles/grass_generation.gd index 2031c64a..02f9bf83 100644 --- a/client/map/tiles/grass_generation.gd +++ b/client/map/tiles/grass_generation.gd @@ -8,7 +8,7 @@ func _ready(): var random = RandomNumberGenerator.new() random.randomize() - for _i in GRASS_COUNT: + for _i in Global.settings["grass_amount"]["value"]: var g: Node3D = grass_side.instantiate() add_child(g) g.position = Vector3(random.randf_range(-.5, .5), 0, random.randf_range(-.5, .5)) diff --git a/client/menu/settings_row.gd b/client/menu/settings_row.gd index 4f1d326f..bfa7064e 100644 --- a/client/menu/settings_row.gd +++ b/client/menu/settings_row.gd @@ -33,6 +33,12 @@ func setup(key: String, dict: Dictionary, defaults: Dictionary): value_node.add_item(i) value_node.select(value) value_node.connect("item_selected", apply.bind(setting["apply"])) + "range": + value_node = HSlider.new() + value_node.min_value = setting["min"] + value_node.max_value = setting["max"] + value_node.tick_count = abs(setting["max"] - setting["min"]) + value_node.value = value _: push_error("Could not set up SettingsRow: Unknown setting type \"%s\"" % setting["type"]) @@ -55,6 +61,8 @@ func get_value(): return value_node.text elif value_node is OptionButton: return value_node.selected + elif value_node is HSlider: + return value_node.value else: push_error("get_value() failed for unknown node type: %s" % value_node) return null |