Skip to content

Commit b036959

Browse files
authored
Merge pull request #226 from endlessm/add-category-block-order
Add category block order
2 parents 4cd2a69 + 9559577 commit b036959

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

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

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,23 @@ extends MarginContainer
44
signal block_picked(block: Block)
55

66
const BlockCategory = preload("res://addons/block_code/ui/picker/categories/block_category.gd")
7+
const BlockDefinition = preload("res://addons/block_code/code_generation/block_definition.gd")
78
const Util = preload("res://addons/block_code/ui/util.gd")
89

10+
const CATEGORY_ORDER_OVERRIDE = {
11+
"Lifecycle":
12+
[
13+
"ready",
14+
"process",
15+
],
16+
"Logic | Conditionals":
17+
[
18+
"if",
19+
"else",
20+
"else_if",
21+
]
22+
}
23+
924
var category: BlockCategory
1025

1126
@onready var _context := BlockEditorContext.get_default()
@@ -20,11 +35,25 @@ func _ready():
2035
if _context.block_script == null:
2136
return
2237

23-
for block_definition in _context.block_script.get_blocks_in_category(category):
38+
if category == null:
39+
return
40+
41+
var category_order = CATEGORY_ORDER_OVERRIDE.get(category.name)
42+
var block_definitions = _context.block_script.get_blocks_in_category(category)
43+
if category_order:
44+
block_definitions.sort_custom(_sort_blocks_by_list_order.bind(category_order))
45+
46+
for block_definition in block_definitions:
2447
var block: Block = _context.block_script.instantiate_block(block_definition)
2548

2649
block.color = category.color
2750
block.can_delete = false
2851
block.drag_started.connect(func(block: Block): block_picked.emit(block))
2952

3053
_blocks.add_child(block)
54+
55+
56+
static func _sort_blocks_by_list_order(block_definition_a, block_definition_b, name_order: Array) -> bool:
57+
var a_order = name_order.find(block_definition_a.name)
58+
var b_order = name_order.find(block_definition_b.name)
59+
return a_order >= 0 and a_order < b_order or b_order == -1

0 commit comments

Comments
 (0)