mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-22 15:38:14 +00:00
43 lines
1.0 KiB
GDScript
43 lines
1.0 KiB
GDScript
@tool
|
|
class_name ModToolInterfaceInputOptions
|
|
extends ModToolInterfaceInput
|
|
|
|
|
|
@export var input_options: Array[String]: set = set_input_options
|
|
|
|
|
|
func set_input_options(new_options: Array[String]) -> void:
|
|
input_options = new_options
|
|
var input: OptionButton = get_node_or_null("%Input") as OptionButton
|
|
if not input or new_options.is_empty(): return # node can't be found directly after reloading the plugin
|
|
|
|
input.clear()
|
|
for option in input_options:
|
|
input.add_item(option)
|
|
input.select(0)
|
|
|
|
|
|
func get_input_value() -> int:
|
|
return ($"%Input" as OptionButton).get_selected_id()
|
|
|
|
|
|
func get_input_string() -> String:
|
|
if get_input_value() == -1:
|
|
return ""
|
|
return input_options[get_input_value()]
|
|
|
|
|
|
func validate(condition: bool) -> bool:
|
|
# Check if input is required and empty
|
|
if is_required and get_input_value() == -1:
|
|
is_valid = false
|
|
return false
|
|
|
|
# Invalidate field if the condition is not met
|
|
is_valid = condition
|
|
return is_valid
|
|
|
|
|
|
func _on_Input_item_selected(index: int) -> void:
|
|
emit_signal("value_changed", get_input_string(), self)
|