|
2 | 2 | class_name StatementBlock
|
3 | 3 | extends Block
|
4 | 4 |
|
| 5 | +const BlocksCatalog = preload("res://addons/block_code/code_generation/blocks_catalog.gd") |
5 | 6 | const ParameterInput = preload("res://addons/block_code/ui/blocks/utilities/parameter_input/parameter_input.gd")
|
6 | 7 | const ParameterInputScene = preload("res://addons/block_code/ui/blocks/utilities/parameter_input/parameter_input.tscn")
|
| 8 | +const ParameterOutput = preload("res://addons/block_code/ui/blocks/utilities/parameter_output/parameter_output.gd") |
| 9 | +const ParameterOutputScene = preload("res://addons/block_code/ui/blocks/utilities/parameter_output/parameter_output.tscn") |
| 10 | +const Types = preload("res://addons/block_code/types/types.gd") |
7 | 11 |
|
8 | 12 | @onready var _background := %Background
|
9 | 13 | @onready var _hbox := %HBoxContainer
|
@@ -47,6 +51,7 @@ func format():
|
47 | 51 |
|
48 | 52 |
|
49 | 53 | static func format_string(parent_block: Block, attach_to: Node, string: String, _defaults: Dictionary) -> Dictionary:
|
| 54 | + BlocksCatalog.setup() |
50 | 55 | var _arg_name_to_param_input_dict = {}
|
51 | 56 | var regex = RegEx.new()
|
52 | 57 | regex.compile("\\[([^\\]]+)\\]|\\{([^}]+)\\}") # Capture things of format {test} or [test]
|
@@ -83,18 +88,13 @@ static func format_string(parent_block: Block, attach_to: Node, string: String,
|
83 | 88 | var param_node: Node
|
84 | 89 |
|
85 | 90 | if copy_block:
|
86 |
| - var parameter_output: ParameterOutput = preload("res://addons/block_code/ui/blocks/utilities/parameter_output/parameter_output.tscn").instantiate() |
| 91 | + var parameter_output: ParameterOutput = ParameterOutputScene.instantiate() |
87 | 92 | parameter_output.name = "ParameterOutput%d" % start # Unique path
|
88 | 93 |
|
89 |
| - # FIXME: This logic could be separated because it is the same as in CategoryFactory get_parameter_output_blocks() |
90 |
| - var block_definition = BlockDefinition.new() |
91 |
| - block_definition.name = parent_block.definition.name + "_" + param_name |
92 |
| - block_definition.category = parent_block.definition.category |
93 |
| - block_definition.type = Types.BlockType.VALUE |
94 |
| - block_definition.variant_type = param_type |
95 |
| - block_definition.display_template = param_name |
96 |
| - block_definition.code_template = param_name |
97 |
| - block_definition.scope = parent_block.definition.code_template |
| 94 | + var block_name = &"%s_%s" % [parent_block.definition.name, param_name] |
| 95 | + var block_definition = BlocksCatalog.get_block(block_name) |
| 96 | + if block_definition == null: |
| 97 | + push_error("Could not locate block definition %s" % block_name) |
98 | 98 |
|
99 | 99 | parameter_output.block_params = {"definition": block_definition, "color": parent_block.color}
|
100 | 100 | parameter_output.block = parent_block
|
|
0 commit comments