@@ -7,16 +7,17 @@ func generate_script_from_current_window(script_inherits: String = ""):
77 # TODO: implement multiple windows
88 var current_window := _window
99
10- var blocks := current_window . get_children ()
10+ var entry_blocks_by_entry_statement : Dictionary = {}
1111
12- var entry_blocks : Array [EntryBlock ] = []
13-
14- for c in blocks :
15- if ! (c is Block ):
12+ for block in current_window .get_children ():
13+ if ! (block is Block ):
1614 continue
1715
18- if c is EntryBlock :
19- entry_blocks .append (c )
16+ if block is EntryBlock :
17+ var entry_statement = block .get_entry_statement ()
18+ if not entry_blocks_by_entry_statement .has (entry_statement ):
19+ entry_blocks_by_entry_statement [entry_statement ] = []
20+ entry_blocks_by_entry_statement [entry_statement ].append (block )
2021
2122 var script : String = ""
2223
@@ -26,9 +27,21 @@ func generate_script_from_current_window(script_inherits: String = ""):
2627
2728 var init_func = InstructionTree .TreeNode .new ("func _init():" )
2829
29- for entry_block in entry_blocks :
30- script += entry_block .get_entry_statement () + "\n "
30+ for entry_statement in entry_blocks_by_entry_statement :
31+ var entry_blocks : Array [EntryBlock ]
32+ entry_blocks .assign (entry_blocks_by_entry_statement [entry_statement ])
33+ script += _generate_script_from_entry_blocks (entry_statement , entry_blocks , init_func )
34+
35+ if init_func .children :
36+ script += InstructionTree .new ().generate_text (init_func )
37+
38+ return script
3139
40+
41+ func _generate_script_from_entry_blocks (entry_statement : String , entry_blocks : Array [EntryBlock ], init_func : InstructionTree .TreeNode ) -> String :
42+ var script = entry_statement + "\n "
43+
44+ for entry_block in entry_blocks :
3245 var next_block := entry_block .bottom_snap .get_snapped_block ()
3346
3447 if next_block == null :
@@ -44,7 +57,4 @@ func generate_script_from_current_window(script_inherits: String = ""):
4457 if entry_block .signal_name :
4558 init_func .add_child (InstructionTree .TreeNode .new ("{0} .connect(_on_{0} )" .format ([entry_block .signal_name ])))
4659
47- if init_func .children :
48- script += InstructionTree .new ().generate_text (init_func )
49-
5060 return script
0 commit comments