@@ -4,6 +4,7 @@ extends Block
4
4
5
5
@export var block_format : String = ""
6
6
@export var statement : String = ""
7
+ @export var defaults : Dictionary = {}
7
8
8
9
@onready var _background := % Background
9
10
@onready var _hbox := % HBoxContainer
@@ -23,7 +24,7 @@ func _ready():
23
24
24
25
if param_input_strings :
25
26
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 ]])
27
28
28
29
29
30
func _on_drag_drop_area_mouse_down ():
@@ -32,11 +33,11 @@ func _on_drag_drop_area_mouse_down():
32
33
33
34
func get_serialized_props () -> Array :
34
35
var props := super ()
35
- props .append_array (serialize_props (["block_format" , "statement" ]))
36
+ props .append_array (serialize_props (["block_format" , "statement" , "defaults" ]))
36
37
37
38
var _param_input_strings : Dictionary = {}
38
39
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 ()
40
41
41
42
props .append (["param_input_strings" , _param_input_strings ])
42
43
return props
@@ -75,10 +76,10 @@ func get_instruction_node() -> InstructionTree.TreeNode:
75
76
76
77
77
78
func format ():
78
- param_name_input_pairs = format_string (self , % HBoxContainer , block_format )
79
+ param_name_input_pairs = format_string (self , % HBoxContainer , block_format , defaults )
79
80
80
81
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 :
82
83
var _param_name_input_pairs = []
83
84
var regex = RegEx .new ()
84
85
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)
100
101
var split := param .split (": " )
101
102
var param_name := split [0 ]
102
103
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 ]
104
115
105
116
var param_input : ParameterInput = preload ("res://addons/block_code/ui/blocks/utilities/parameter_input/parameter_input.tscn" ).instantiate ()
106
117
param_input .name = "ParameterInput%d " % start # Unique path
107
118
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
109
123
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
+
111
126
attach_to .add_child (param_input )
127
+ if param_default :
128
+ param_input .set_raw_input (param_default )
129
+
112
130
_param_name_input_pairs .append ([param_name , param_input ])
113
131
114
132
if copy_block :
0 commit comments