Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions addons/block_code/types/types.gd
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ enum BlockType {
FLOAT,
VECTOR2,
BOOL,
COLOR,
NODE
}
38 changes: 19 additions & 19 deletions addons/block_code/ui/bsd_templates/default_blocktrees.tres
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
[gd_resource type="Resource" script_class="SerializedBlockTreeNodeArray" load_steps=8 format=3 uid="uid://djn5nejdsfu2a"]

[ext_resource type="Script" path="res://addons/block_code/ui/block_canvas/serialized_block_tree_node.gd" id="1_sy3q2"]
[ext_resource type="Script" path="res://addons/block_code/ui/block_canvas/serialized_block.gd" id="2_pyn0y"]
[ext_resource type="Script" path="res://addons/block_code/ui/block_canvas/serialized_block_tree_node_array.gd" id="3_bdpy2"]
[ext_resource type="Script" path="res://addons/block_code/ui/block_canvas/serialized_block_tree_node.gd" id="1_mfn7y"]
[ext_resource type="Script" path="res://addons/block_code/ui/block_canvas/serialized_block.gd" id="2_qtg7h"]
[ext_resource type="Script" path="res://addons/block_code/ui/block_canvas/serialized_block_tree_node_array.gd" id="3_jo5dc"]

[sub_resource type="Resource" id="Resource_00uhr"]
script = ExtResource("2_pyn0y")
block_path = "res://addons/block_code/ui/blocks/basic_block/basic_block.tscn"
serialized_props = [["block_name", "ready_block"], ["label", "On Ready"], ["color", Color(0.980392, 0.34902, 0.337255, 1)], ["block_type", 2], ["position", Vector2(51, 51)]]
[sub_resource type="Resource" id="Resource_lonji"]
script = ExtResource("2_qtg7h")
block_path = "res://addons/block_code/ui/blocks/entry_block/entry_block.tscn"
serialized_props = [["block_name", "ready_block"], ["label", "EntryBlock"], ["color", Color(0.980392, 0.34902, 0.337255, 1)], ["block_type", 2], ["position", Vector2(54, 47)], ["block_format", "On Ready"], ["statement", "func _ready():"], ["param_input_strings", {}]]

[sub_resource type="Resource" id="Resource_u1sqr"]
script = ExtResource("1_sy3q2")
serialized_block = SubResource("Resource_00uhr")
[sub_resource type="Resource" id="Resource_uxduk"]
script = ExtResource("1_mfn7y")
serialized_block = SubResource("Resource_lonji")
path_child_pairs = []

[sub_resource type="Resource" id="Resource_6d7jb"]
script = ExtResource("2_pyn0y")
block_path = "res://addons/block_code/ui/blocks/basic_block/basic_block.tscn"
serialized_props = [["block_name", "process_block"], ["label", "On Process"], ["color", Color(0.980392, 0.34902, 0.337255, 1)], ["block_type", 1], ["position", Vector2(666, 52)]]
[sub_resource type="Resource" id="Resource_8uoy7"]
script = ExtResource("2_qtg7h")
block_path = "res://addons/block_code/ui/blocks/entry_block/entry_block.tscn"
serialized_props = [["block_name", "process_block"], ["label", "EntryBlock"], ["color", Color(0.980392, 0.34902, 0.337255, 1)], ["block_type", 2], ["position", Vector2(525, 48)], ["block_format", "On Process"], ["statement", "func _process(delta):"], ["param_input_strings", {}]]

[sub_resource type="Resource" id="Resource_h3qcs"]
script = ExtResource("1_sy3q2")
serialized_block = SubResource("Resource_6d7jb")
[sub_resource type="Resource" id="Resource_qsjc2"]
script = ExtResource("1_mfn7y")
serialized_block = SubResource("Resource_8uoy7")
path_child_pairs = []

[resource]
script = ExtResource("3_bdpy2")
array = Array[ExtResource("1_sy3q2")]([SubResource("Resource_u1sqr"), SubResource("Resource_h3qcs")])
script = ExtResource("3_jo5dc")
array = Array[ExtResource("1_mfn7y")]([SubResource("Resource_uxduk"), SubResource("Resource_qsjc2")])
97 changes: 81 additions & 16 deletions addons/block_code/ui/picker/categories/category_factory.gd
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,32 @@ const BLOCKS: Dictionary = {
static func get_general_categories() -> Array[BlockCategory]:
var b: Block

# Entry
var entry_list: Array[Block] = []
# Lifecycle
var lifecycle_list: Array[Block] = []
b = BLOCKS["entry_block"].instantiate()
b.block_name = "ready_block"
b.block_format = "On Ready"
b.statement = "func _ready():"
entry_list.append(b)
lifecycle_list.append(b)

b = BLOCKS["entry_block"].instantiate()
b.block_name = "process_block"
b.block_format = "On Process"
b.statement = "func _process(delta):"
entry_list.append(b)
lifecycle_list.append(b)

b = BLOCKS["entry_block"].instantiate()
b.block_name = "physics_process_block"
b.block_format = "On Physics Process"
b.statement = "func _physics_process(delta):"
entry_list.append(b)
lifecycle_list.append(b)

var entry_cat: BlockCategory = BlockCategory.new("Entry", entry_list, Color("fa5956"))
b = BLOCKS["statement_block"].instantiate()
b.block_format = "Queue Free"
b.statement = "queue_free()"
lifecycle_list.append(b)

var lifecycle_cat: BlockCategory = BlockCategory.new("Lifecycle", lifecycle_list, Color("fa5956"))

# Control
var control_list: Array[Block] = []
Expand All @@ -49,12 +54,25 @@ static func get_general_categories() -> Array[BlockCategory]:
control_list.append(b)

b = BLOCKS["control_block"].instantiate()
b.block_formats = [
"repeat {num: INT}",
]
b.block_formats = ["repeat {num: INT}"]
b.statements = ["for i in {num}:"]
control_list.append(b)

b = BLOCKS["control_block"].instantiate()
b.block_formats = ["while {bool: BOOL}"]
b.statements = ["while {bool}:"]
control_list.append(b)

b = BLOCKS["statement_block"].instantiate()
b.block_format = "Break"
b.statement = "break"
control_list.append(b)

b = BLOCKS["statement_block"].instantiate()
b.block_format = "Continue"
b.statement = "continue"
control_list.append(b)

var control_cat: BlockCategory = BlockCategory.new("Control", control_list, Color("ffad76"))

# Test
Expand Down Expand Up @@ -126,23 +144,28 @@ static func get_general_categories() -> Array[BlockCategory]:

b = BLOCKS["statement_block"].instantiate()
b.block_format = "Set String {var: STRING} {value: STRING}"
b.statement = 'VAR_DICT["{var}"] = "{value}"'
b.statement = "VAR_DICT[{var}] = {value}"
variable_list.append(b)

b = BLOCKS["parameter_block"].instantiate()
b.block_format = "Get String {var: STRING}"
b.statement = 'VAR_DICT["{var}"]'
b.statement = "VAR_DICT[{var}]"
variable_list.append(b)

b = BLOCKS["statement_block"].instantiate()
b.block_format = "Set Int {var: STRING} {value: INT}"
b.statement = 'VAR_DICT["{var}"] = {value}'
b.statement = "VAR_DICT[{var}] = {value}"
variable_list.append(b)

b = BLOCKS["parameter_block"].instantiate()
b.block_type = Types.BlockType.INT
b.block_format = "Get Int {var: INT}"
b.statement = 'VAR_DICT["{var}"]'
b.block_format = "Get Int {var: STRING}"
b.statement = "VAR_DICT[{var}]"
variable_list.append(b)

b = BLOCKS["parameter_block"].instantiate()
b.block_format = "To String {int: INT}"
b.statement = "str({int})"
variable_list.append(b)

var variable_cat: BlockCategory = BlockCategory.new("Variables", variable_list, Color("4f975d"))
Expand Down Expand Up @@ -174,9 +197,41 @@ static func get_general_categories() -> Array[BlockCategory]:
b.statement = "({a} / {b})"
math_list.append(b)

b = BLOCKS["parameter_block"].instantiate()
b.block_type = Types.BlockType.INT
b.block_format = "{base: INT} ^ {exp: INT}"
b.statement = "(pow({base}, {exp}))"
math_list.append(b)

var math_cat: BlockCategory = BlockCategory.new("Math", math_list, Color("3042c5"))

return [entry_cat, signal_cat, control_cat, test_cat, math_cat, variable_cat]
# Logic

var logic_list: Array[Block] = []

for op in ["==", ">", "<", ">=", "<=", "!="]:
b = BLOCKS["parameter_block"].instantiate()
b.block_type = Types.BlockType.BOOL
b.block_format = "{int1: INT} %s {int2: INT}" % op
b.statement = "({int1} %s {int2})" % op
logic_list.append(b)

for op in ["and", "or"]:
b = BLOCKS["parameter_block"].instantiate()
b.block_type = Types.BlockType.BOOL
b.block_format = "{bool1: BOOL} %s {bool2: BOOL}" % op
b.statement = "({bool1} %s {bool2})" % op
logic_list.append(b)

b = BLOCKS["parameter_block"].instantiate()
b.block_type = Types.BlockType.BOOL
b.block_format = "Not {bool: BOOL}"
b.statement = "(!{bool})"
logic_list.append(b)

var logic_cat: BlockCategory = BlockCategory.new("Logic", logic_list, Color("42b8e3"))

return [lifecycle_cat, signal_cat, control_cat, test_cat, math_cat, logic_cat, variable_cat]


static func add_to_categories(main: Array[BlockCategory], addition: Array[BlockCategory]) -> Array[BlockCategory]:
Expand Down Expand Up @@ -208,6 +263,8 @@ static func built_in_type_to_block_type(type: Variant.Type):
return Types.BlockType.STRING
TYPE_VECTOR2:
return Types.BlockType.VECTOR2
TYPE_COLOR:
return Types.BlockType.COLOR

return null

Expand All @@ -221,7 +278,7 @@ static func property_to_blocklist(property: Dictionary) -> Array[Block]:
var type_string: String = Types.BlockType.find_key(block_type)

var b = BLOCKS["statement_block"].instantiate()
b.block_format = "Set %s {value: %s}" % [property.name.capitalize(), type_string]
b.block_format = "Set %s to {value: %s}" % [property.name.capitalize(), type_string]
b.statement = "%s = {value}" % property.name
block_list.append(b)

Expand Down Expand Up @@ -280,6 +337,14 @@ static func get_built_in_categories(_class_name: String) -> Array[BlockCategory]

props = ["position", "rotation", "scale"]

"CanvasItem":
props = ["modulate"]

"RigidBody2D":
# On body entered

props = ["mass", "linear_velocity", "angular_velocity"]

var prop_list = ClassDB.class_get_property_list(_class_name, true)

var class_cat: BlockCategory = category_from_property_list(prop_list, props, _class_name, Color.SLATE_GRAY)
Expand Down
Loading