@@ -4,6 +4,7 @@ extends Block
44
55@export var block_format : String = ""
66@export var statement : String = ""
7+ @export var defaults : Dictionary = {}
78
89@onready var _background := % Background
910@onready var _hbox := % HBoxContainer
@@ -23,7 +24,7 @@ func _ready():
2324
2425 if param_input_strings :
2526 for pair in param_name_input_pairs :
26- pair [1 ].set_plain_text (param_input_strings [pair [0 ]])
27+ pair [1 ].set_raw_input (param_input_strings [pair [0 ]])
2728
2829
2930func _on_drag_drop_area_mouse_down ():
@@ -32,11 +33,11 @@ func _on_drag_drop_area_mouse_down():
3233
3334func get_serialized_props () -> Array :
3435 var props := super ()
35- props .append_array (serialize_props (["block_format" , "statement" ]))
36+ props .append_array (serialize_props (["block_format" , "statement" , "defaults" ]))
3637
3738 var _param_input_strings : Dictionary = {}
3839 for pair in param_name_input_pairs :
39- _param_input_strings [pair [0 ]] = pair [1 ].get_plain_text ()
40+ _param_input_strings [pair [0 ]] = pair [1 ].get_raw_input ()
4041
4142 props .append (["param_input_strings" , _param_input_strings ])
4243 return props
@@ -75,10 +76,10 @@ func get_instruction_node() -> InstructionTree.TreeNode:
7576
7677
7778func format ():
78- param_name_input_pairs = format_string (self , % HBoxContainer , block_format )
79+ param_name_input_pairs = format_string (self , % HBoxContainer , block_format , defaults )
7980
8081
81- static func format_string (parent_block : Block , attach_to : Node , string : String ) -> Array :
82+ static func format_string (parent_block : Block , attach_to : Node , string : String , _defaults : Dictionary ) -> Array :
8283 var _param_name_input_pairs = []
8384 var regex = RegEx .new ()
8485 regex .compile ("\\ [([^\\ ]]+)\\ ]|\\ {([^}]+)\\ }" ) # Capture things of format {test} or [test]
@@ -100,15 +101,32 @@ static func format_string(parent_block: Block, attach_to: Node, string: String)
100101 var split := param .split (": " )
101102 var param_name := split [0 ]
102103 var param_type_str := split [1 ]
103- var param_type : Variant .Type = Types .STRING_TO_VARIANT_TYPE [param_type_str ]
104+
105+ var param_type = null
106+ var option := false
107+ if param_type_str == "OPTION" : # Easy way to specify dropdown option
108+ option = true
109+ else :
110+ param_type = Types .STRING_TO_VARIANT_TYPE [param_type_str ]
111+
112+ var param_default = null
113+ if _defaults .has (param_name ):
114+ param_default = _defaults [param_name ]
104115
105116 var param_input : ParameterInput = preload ("res://addons/block_code/ui/blocks/utilities/parameter_input/parameter_input.tscn" ).instantiate ()
106117 param_input .name = "ParameterInput%d " % start # Unique path
107118 param_input .placeholder = param_name
108- param_input .variant_type = param_type
119+ if param_type :
120+ param_input .variant_type = param_type
121+ elif option :
122+ param_input .option = true
109123 param_input .block = parent_block
110- param_input .text_modified .connect (func (): parent_block .modified .emit ())
124+ param_input .modified .connect (func (): parent_block .modified .emit ())
125+
111126 attach_to .add_child (param_input )
127+ if param_default :
128+ param_input .set_raw_input (param_default )
129+
112130 _param_name_input_pairs .append ([param_name , param_input ])
113131
114132 if copy_block :
0 commit comments