@@ -13,27 +13,32 @@ const BLOCKS: Dictionary = {
1313static 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
182237static 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