summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-06-29 20:41:23 +0200
committermetamuffin <metamuffin@disroot.org>2024-06-29 20:41:23 +0200
commitc1a65adf8aecaa56ee3a7495d5eb59bcce694d93 (patch)
treec7127df6af7e4943f0c85eab97e79a7f3f8e2873
parent3ac2dc4abaeedea61c3a60bd5c4ae11166d8b188 (diff)
parentc06d39a894906c17bd04be6281da9d2e2bb08838 (diff)
downloadhurrycurry-c1a65adf8aecaa56ee3a7495d5eb59bcce694d93.tar
hurrycurry-c1a65adf8aecaa56ee3a7495d5eb59bcce694d93.tar.bz2
hurrycurry-c1a65adf8aecaa56ee3a7495d5eb59bcce694d93.tar.zst
Merge branch 'master' of https://codeberg.org/metamuffin/undercooked
-rw-r--r--client/global.gd24
-rw-r--r--client/map/tiles/grass_generation.gd2
-rw-r--r--client/menu/settings_row.gd8
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