@@ -14,14 +14,16 @@ var _tween = Tween.new()
1414var _level : ComparisonSort
1515var _rects = []
1616var _positions = []
17- var _pointer = null
17+ var _pointer = Polygon2D . new ()
1818var _pointer_size : int
1919onready var _separation = 128 / _level .array .size
2020
2121func _init (level ):
2222 _level = level
2323 add_child (_level ) # NOTE: This is necessary for it to read input
2424 add_child (_tween ) # NOTE: This is necessary for it to animate
25+ add_child (_pointer )
26+ _pointer .hide ()
2527
2628func _ready ():
2729 yield (get_tree (), "idle_frame" )
@@ -32,6 +34,7 @@ func _ready():
3234 var accumulated = 0
3335 var x = 0
3436 _level .connect ("mistake" , get_parent (), "flash" )
37+ _level .connect ("done" , self , "_on_ComparisonSort_done" )
3538 var width = unit_width - _separation
3639 var height = rect_size .y - _pointer_size * 2
3740 for i in range (_level .array .size ):
@@ -53,28 +56,29 @@ func _ready():
5356 add_child (rect )
5457 _level .array .connect ("swapped" , self , "_on_ArrayModel_swapped" )
5558 if _level .has_method ("get_pointer" ):
56- _pointer = Polygon2D .new ()
5759 _pointer .polygon = [
5860 Vector2 (width / 2 , _pointer_size ),
5961 Vector2 (width / 2 - _pointer_size , 0 ),
6062 Vector2 (width / 2 + _pointer_size , 0 ),
6163 ]
6264 _pointer .color = GlobalTheme .BLUE
63- add_child ( _pointer )
65+ _pointer . show ( )
6466
6567func _process (delta ):
66- if _pointer != null :
68+ if _pointer . visible :
6769 var pointed = _level .get_pointer ()
6870 var height = rect_size .y - _pointer_size * 2
6971 _pointer .position = Vector2 (_rects [pointed ].position .x ,
7072 height - _level .array .frac (pointed ) * height )
71- if _level .done :
72- _pointer .queue_free ()
7373 for i in range (_rects .size ()):
74- if _level .done :
75- _rects [i ].color = ComparisonSort .EFFECTS .NONE
76- else :
77- _rects [i ].color = _level .get_effect (i )
74+ _rects [i ].color = _level .get_effect (i )
75+ _rects [i ].scale .y = - _level .array .frac (i )
76+
77+ func _on_ComparisonSort_done ():
78+ set_process (false )
79+ _pointer .hide ()
80+ for i in range (_rects .size ()):
81+ _rects [i ].color = ComparisonSort .EFFECTS .NONE
7882 _rects [i ].scale .y = - _level .array .frac (i )
7983
8084func _on_ArrayModel_swapped (i , j ):
0 commit comments