Skip to content

Commit 62e90bf

Browse files
authored
Merge pull request #26 from endlessm/more-blocks
More blocks
2 parents 29fc87a + f9007d0 commit 62e90bf

File tree

4 files changed

+760
-61
lines changed

4 files changed

+760
-61
lines changed

addons/block_code/types/types.gd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ enum BlockType {
1111
FLOAT,
1212
VECTOR2,
1313
BOOL,
14+
COLOR,
1415
NODE
1516
}
Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
[gd_resource type="Resource" script_class="SerializedBlockTreeNodeArray" load_steps=8 format=3 uid="uid://djn5nejdsfu2a"]
22

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

7-
[sub_resource type="Resource" id="Resource_00uhr"]
8-
script = ExtResource("2_pyn0y")
9-
block_path = "res://addons/block_code/ui/blocks/basic_block/basic_block.tscn"
10-
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)]]
7+
[sub_resource type="Resource" id="Resource_lonji"]
8+
script = ExtResource("2_qtg7h")
9+
block_path = "res://addons/block_code/ui/blocks/entry_block/entry_block.tscn"
10+
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", {}]]
1111

12-
[sub_resource type="Resource" id="Resource_u1sqr"]
13-
script = ExtResource("1_sy3q2")
14-
serialized_block = SubResource("Resource_00uhr")
12+
[sub_resource type="Resource" id="Resource_uxduk"]
13+
script = ExtResource("1_mfn7y")
14+
serialized_block = SubResource("Resource_lonji")
1515
path_child_pairs = []
1616

17-
[sub_resource type="Resource" id="Resource_6d7jb"]
18-
script = ExtResource("2_pyn0y")
19-
block_path = "res://addons/block_code/ui/blocks/basic_block/basic_block.tscn"
20-
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)]]
17+
[sub_resource type="Resource" id="Resource_8uoy7"]
18+
script = ExtResource("2_qtg7h")
19+
block_path = "res://addons/block_code/ui/blocks/entry_block/entry_block.tscn"
20+
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", {}]]
2121

22-
[sub_resource type="Resource" id="Resource_h3qcs"]
23-
script = ExtResource("1_sy3q2")
24-
serialized_block = SubResource("Resource_6d7jb")
22+
[sub_resource type="Resource" id="Resource_qsjc2"]
23+
script = ExtResource("1_mfn7y")
24+
serialized_block = SubResource("Resource_8uoy7")
2525
path_child_pairs = []
2626

2727
[resource]
28-
script = ExtResource("3_bdpy2")
29-
array = Array[ExtResource("1_sy3q2")]([SubResource("Resource_u1sqr"), SubResource("Resource_h3qcs")])
28+
script = ExtResource("3_jo5dc")
29+
array = Array[ExtResource("1_mfn7y")]([SubResource("Resource_uxduk"), SubResource("Resource_qsjc2")])

addons/block_code/ui/picker/categories/category_factory.gd

Lines changed: 81 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,32 @@ const BLOCKS: Dictionary = {
1313
static func get_general_categories() -> Array[BlockCategory]:
1414
var b: Block
1515

16-
# Entry
17-
var entry_list: Array[Block] = []
16+
# Lifecycle
17+
var lifecycle_list: Array[Block] = []
1818
b = BLOCKS["entry_block"].instantiate()
1919
b.block_name = "ready_block"
2020
b.block_format = "On Ready"
2121
b.statement = "func _ready():"
22-
entry_list.append(b)
22+
lifecycle_list.append(b)
2323

2424
b = BLOCKS["entry_block"].instantiate()
2525
b.block_name = "process_block"
2626
b.block_format = "On Process"
2727
b.statement = "func _process(delta):"
28-
entry_list.append(b)
28+
lifecycle_list.append(b)
2929

3030
b = BLOCKS["entry_block"].instantiate()
3131
b.block_name = "physics_process_block"
3232
b.block_format = "On Physics Process"
3333
b.statement = "func _physics_process(delta):"
34-
entry_list.append(b)
34+
lifecycle_list.append(b)
3535

36-
var entry_cat: BlockCategory = BlockCategory.new("Entry", entry_list, Color("fa5956"))
36+
b = BLOCKS["statement_block"].instantiate()
37+
b.block_format = "Queue Free"
38+
b.statement = "queue_free()"
39+
lifecycle_list.append(b)
40+
41+
var lifecycle_cat: BlockCategory = BlockCategory.new("Lifecycle", lifecycle_list, Color("fa5956"))
3742

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

5156
b = BLOCKS["control_block"].instantiate()
52-
b.block_formats = [
53-
"repeat {num: INT}",
54-
]
57+
b.block_formats = ["repeat {num: INT}"]
5558
b.statements = ["for i in {num}:"]
5659
control_list.append(b)
5760

61+
b = BLOCKS["control_block"].instantiate()
62+
b.block_formats = ["while {bool: BOOL}"]
63+
b.statements = ["while {bool}:"]
64+
control_list.append(b)
65+
66+
b = BLOCKS["statement_block"].instantiate()
67+
b.block_format = "Break"
68+
b.statement = "break"
69+
control_list.append(b)
70+
71+
b = BLOCKS["statement_block"].instantiate()
72+
b.block_format = "Continue"
73+
b.statement = "continue"
74+
control_list.append(b)
75+
5876
var control_cat: BlockCategory = BlockCategory.new("Control", control_list, Color("ffad76"))
5977

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

127145
b = BLOCKS["statement_block"].instantiate()
128146
b.block_format = "Set String {var: STRING} {value: STRING}"
129-
b.statement = 'VAR_DICT["{var}"] = "{value}"'
147+
b.statement = "VAR_DICT[{var}] = {value}"
130148
variable_list.append(b)
131149

132150
b = BLOCKS["parameter_block"].instantiate()
133151
b.block_format = "Get String {var: STRING}"
134-
b.statement = 'VAR_DICT["{var}"]'
152+
b.statement = "VAR_DICT[{var}]"
135153
variable_list.append(b)
136154

137155
b = BLOCKS["statement_block"].instantiate()
138156
b.block_format = "Set Int {var: STRING} {value: INT}"
139-
b.statement = 'VAR_DICT["{var}"] = {value}'
157+
b.statement = "VAR_DICT[{var}] = {value}"
140158
variable_list.append(b)
141159

142160
b = BLOCKS["parameter_block"].instantiate()
143161
b.block_type = Types.BlockType.INT
144-
b.block_format = "Get Int {var: INT}"
145-
b.statement = 'VAR_DICT["{var}"]'
162+
b.block_format = "Get Int {var: STRING}"
163+
b.statement = "VAR_DICT[{var}]"
164+
variable_list.append(b)
165+
166+
b = BLOCKS["parameter_block"].instantiate()
167+
b.block_format = "To String {int: INT}"
168+
b.statement = "str({int})"
146169
variable_list.append(b)
147170

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

200+
b = BLOCKS["parameter_block"].instantiate()
201+
b.block_type = Types.BlockType.INT
202+
b.block_format = "{base: INT} ^ {exp: INT}"
203+
b.statement = "(pow({base}, {exp}))"
204+
math_list.append(b)
205+
177206
var math_cat: BlockCategory = BlockCategory.new("Math", math_list, Color("3042c5"))
178207

179-
return [entry_cat, signal_cat, control_cat, test_cat, math_cat, variable_cat]
208+
# Logic
209+
210+
var logic_list: Array[Block] = []
211+
212+
for op in ["==", ">", "<", ">=", "<=", "!="]:
213+
b = BLOCKS["parameter_block"].instantiate()
214+
b.block_type = Types.BlockType.BOOL
215+
b.block_format = "{int1: INT} %s {int2: INT}" % op
216+
b.statement = "({int1} %s {int2})" % op
217+
logic_list.append(b)
218+
219+
for op in ["and", "or"]:
220+
b = BLOCKS["parameter_block"].instantiate()
221+
b.block_type = Types.BlockType.BOOL
222+
b.block_format = "{bool1: BOOL} %s {bool2: BOOL}" % op
223+
b.statement = "({bool1} %s {bool2})" % op
224+
logic_list.append(b)
225+
226+
b = BLOCKS["parameter_block"].instantiate()
227+
b.block_type = Types.BlockType.BOOL
228+
b.block_format = "Not {bool: BOOL}"
229+
b.statement = "(!{bool})"
230+
logic_list.append(b)
231+
232+
var logic_cat: BlockCategory = BlockCategory.new("Logic", logic_list, Color("42b8e3"))
233+
234+
return [lifecycle_cat, signal_cat, control_cat, test_cat, math_cat, logic_cat, variable_cat]
180235

181236

182237
static func add_to_categories(main: Array[BlockCategory], addition: Array[BlockCategory]) -> Array[BlockCategory]:
@@ -208,6 +263,8 @@ static func built_in_type_to_block_type(type: Variant.Type):
208263
return Types.BlockType.STRING
209264
TYPE_VECTOR2:
210265
return Types.BlockType.VECTOR2
266+
TYPE_COLOR:
267+
return Types.BlockType.COLOR
211268

212269
return null
213270

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

223280
var b = BLOCKS["statement_block"].instantiate()
224-
b.block_format = "Set %s {value: %s}" % [property.name.capitalize(), type_string]
281+
b.block_format = "Set %s to {value: %s}" % [property.name.capitalize(), type_string]
225282
b.statement = "%s = {value}" % property.name
226283
block_list.append(b)
227284

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

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

340+
"CanvasItem":
341+
props = ["modulate"]
342+
343+
"RigidBody2D":
344+
# On body entered
345+
346+
props = ["mass", "linear_velocity", "angular_velocity"]
347+
283348
var prop_list = ClassDB.class_get_property_list(_class_name, true)
284349

285350
var class_cat: BlockCategory = category_from_property_list(prop_list, props, _class_name, Color.SLATE_GRAY)

0 commit comments

Comments
 (0)