@@ -5,66 +5,4 @@ extends BlockCanvas
5
5
6
6
func generate_script_from_current_window (bsd : BlockScriptData ):
7
7
# TODO: implement multiple windows
8
- var current_window := _window
9
-
10
- var entry_blocks_by_entry_statement : Dictionary = {}
11
-
12
- for block in current_window .get_children ():
13
- if ! (block is Block ):
14
- continue
15
-
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 )
21
-
22
- var script : String = ""
23
-
24
- script += "extends %s \n\n " % bsd .script_inherits
25
-
26
- for variable in bsd .variables :
27
- script += "var %s : %s \n\n " % [variable .var_name , type_string (variable .var_type )]
28
-
29
- script += "\n "
30
-
31
- var init_func = InstructionTree .TreeNode .new ("func _init():" )
32
-
33
- for entry_statement in entry_blocks_by_entry_statement :
34
- var entry_blocks : Array [EntryBlock ]
35
- entry_blocks .assign (entry_blocks_by_entry_statement [entry_statement ])
36
- script += _generate_script_from_entry_blocks (entry_statement , entry_blocks , init_func )
37
-
38
- if init_func .children :
39
- script += InstructionTree .generate_text (init_func )
40
-
41
- return script
42
-
43
-
44
- func _generate_script_from_entry_blocks (entry_statement : String , entry_blocks : Array [EntryBlock ], init_func : InstructionTree .TreeNode ) -> String :
45
- var script = entry_statement + "\n "
46
- var signal_node : InstructionTree .TreeNode
47
- var is_empty = true
48
-
49
- InstructionTree .IDHandler .reset ()
50
-
51
- for entry_block in entry_blocks :
52
- var next_block := entry_block .bottom_snap .get_snapped_block ()
53
-
54
- if next_block != null :
55
- var instruction_node : InstructionTree .TreeNode = next_block .get_instruction_node ()
56
- var to_append := InstructionTree .generate_text (instruction_node , 1 )
57
- script += to_append
58
- script += "\n "
59
- is_empty = false
60
-
61
- if signal_node == null and entry_block .signal_name :
62
- signal_node = InstructionTree .TreeNode .new ("{0} .connect(_on_{0} )" .format ([entry_block .signal_name ]))
63
-
64
- if signal_node :
65
- init_func .add_child (signal_node )
66
-
67
- if is_empty :
68
- script += "\t pass\n\n "
69
-
70
- return script
8
+ return InstructionTree .generate_script_from_nodes (_window .get_children (), bsd )
0 commit comments