diff options
| -rw-r--r-- | client/global.gd | 12 | ||||
| -rw-r--r-- | client/map/tiles/grass_generation.gd | 2 | ||||
| -rw-r--r-- | client/menu/settings_row.gd | 8 | 
3 files changed, 19 insertions, 3 deletions
| diff --git a/client/global.gd b/client/global.gd index 35244fa7..b70f4894 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")  	}  } @@ -143,7 +151,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..192d6790 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.setting["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 | 
