Skip to content

Commit 947bd28

Browse files
committed
Move variable setter and getter to BlockDefinition
Create two constructor functions and use them from the catalog.
1 parent 4859cab commit 947bd28

2 files changed

Lines changed: 34 additions & 35 deletions

File tree

addons/block_code/code_generation/block_definition.gd

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
extends Resource
33

44
const Types = preload("res://addons/block_code/types/types.gd")
5+
const VariableDefinition = preload("res://addons/block_code/code_generation/variable_definition.gd")
56

67
const FORMAT_STRING_PATTERN = "\\[(?<out_parameter>[^\\]]+)\\]|\\{const (?<const_parameter>[^}]+)\\}|\\{(?!const )(?<in_parameter>[^}]+)\\}|(?<label>[^\\{\\[]+)"
78
const PROPERTY_SETTER_NAME_PATTERN = "(?<class_name>[^\\s]*)_set_(?<property_name>[^\\s]+)"
@@ -10,6 +11,8 @@ const PROPERTY_CHANGER_NAME_PATTERN = "(?<class_name>[^\\s]*)_change_(?<property
1011
const PROPERTY_CHANGER_NAME_FORMAT = &"%s_change_%s"
1112
const PROPERTY_GETTER_NAME_PATTERN = "(?<class_name>[^\\s]*)_get_(?<property_name>[^\\s]+)"
1213
const PROPERTY_GETTER_NAME_FORMAT = &"%s_get_%s"
14+
const VARIABLE_SETTER_NAME_FORMAT = &"set_var_%s"
15+
const VARIABLE_GETTER_NAME_FORMAT = &"get_var_%s"
1316

1417
@export var name: StringName
1518

@@ -260,3 +263,32 @@ static func new_property_getter(_class_name: String, property: Dictionary, categ
260263
)
261264
block_definition.property_name = property.name
262265
return block_definition
266+
267+
268+
static func new_variable_setter(variable: VariableDefinition) -> Resource:
269+
var _type_string: String = Types.VARIANT_TYPE_TO_STRING[variable.var_type]
270+
var block_definition: Resource = new(
271+
VARIABLE_SETTER_NAME_FORMAT % variable.var_name,
272+
"",
273+
Engine.tr("Set the %s variable") % variable.var_name,
274+
"Variables",
275+
Types.BlockType.STATEMENT,
276+
TYPE_NIL,
277+
Engine.tr("set %s to {value: %s}") % [variable.var_name, _type_string],
278+
"%s = {value}" % variable.var_name,
279+
)
280+
return block_definition
281+
282+
283+
static func new_variable_getter(variable: VariableDefinition) -> Resource:
284+
var block_definition: Resource = new(
285+
VARIABLE_GETTER_NAME_FORMAT % variable.var_name,
286+
"",
287+
Engine.tr("The %s variable") % variable.var_name,
288+
"Variables",
289+
Types.BlockType.VALUE,
290+
variable.var_type,
291+
"%s" % variable.var_name,
292+
"%s",
293+
)
294+
return block_definition

addons/block_code/code_generation/blocks_catalog.gd

Lines changed: 2 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -240,45 +240,12 @@ static func add_custom_blocks(
240240
static func get_variable_block_definitions(variables: Array[VariableDefinition]) -> Array[BlockDefinition]:
241241
var block_definitions: Array[BlockDefinition] = []
242242
for variable: VariableDefinition in variables:
243-
var block_def: BlockDefinition
244-
245-
# Getter
246-
block_def = get_variable_getter_block_definition(variable)
247-
block_definitions.append(block_def)
248-
249-
# Setter
250-
block_def = get_variable_setter_block_definition(variable)
251-
block_definitions.append(block_def)
243+
block_definitions.append(BlockDefinition.new_variable_getter(variable))
244+
block_definitions.append(BlockDefinition.new_variable_setter(variable))
252245

253246
return block_definitions
254247

255248

256-
static func get_variable_getter_block_definition(variable: VariableDefinition) -> BlockDefinition:
257-
var block_def := BlockDefinition.new()
258-
259-
block_def.name = "get_var_%s" % variable.var_name
260-
block_def.category = "Variables"
261-
block_def.type = Types.BlockType.VALUE
262-
block_def.variant_type = variable.var_type
263-
block_def.display_template = variable.var_name
264-
block_def.code_template = variable.var_name
265-
266-
return block_def
267-
268-
269-
static func get_variable_setter_block_definition(variable: VariableDefinition) -> BlockDefinition:
270-
var _type_string: String = Types.VARIANT_TYPE_TO_STRING[variable.var_type]
271-
var block_def := BlockDefinition.new()
272-
273-
block_def.name = "set_var_%s" % variable.var_name
274-
block_def.category = "Variables"
275-
block_def.type = Types.BlockType.STATEMENT
276-
block_def.display_template = "Set %s to {value: %s}" % [variable.var_name, _type_string]
277-
block_def.code_template = "%s = {value}" % variable.var_name
278-
279-
return block_def
280-
281-
282249
static func get_property_getter_block_definition(_class_name: String, property: Dictionary) -> BlockDefinition:
283250
var name = BlockDefinition.PROPERTY_GETTER_NAME_FORMAT % [_class_name, property.name]
284251
if name in _catalog:

0 commit comments

Comments
 (0)