Better way of doing signal from multiple child instances

Godot Version

4.5

Question

This is the code for the parent node of appearing/disappearing child blocks. It works but since I’d be adding more blocks later I’m just wondering elegant way of doing it. Thanks!

@onready var appearing_block_1  : Node3D = $Appearing_Block
@onready var appearing_block_2  : Node3D = $Appearing_Block2
@onready var appearing_block_3  : Node3D = $Appearing_Block3

func _ready() -> void:
	
	appearing_block_1.activation_timer.start()
	
	appearing_block_1.next_block_activate.connect(activate_2)
	appearing_block_2.next_block_activate.connect(activate_3)
	appearing_block_3.next_block_activate.connect(activate_1)
	

func activate_2():
	appearing_block_2.activated()
func activate_3():
	appearing_block_3.activated()
	print("CONNECT")
func activate_1():
	appearing_block_1.activated()
	print("CONNECT")

Child block has a tween that emit signal.

Two possibilities here:
Either Turn you blocks into a linked list or have an array of your blocks on your BlockManager.

Linked list: Each block has a next_blockreference and passes that as an argument for emit when the timer is running out. For fun you might want to make it a double-linked list. See Wikipediafor more info. There's even a lib in the asset store to help youGDScript Data Structures - Godot Asset Library

Array: Keep the block in an array, keep the cursor in a variable and when you get the signal increment the cursor and fire off the next block.

Which to choose depends a lot on how dynamic you want to do this. Adding/removing items from a linked list is very different than removing them from an array. On the other hand, in a linked list you can go from next_block to next_blocks much easier than with an array.