@@ -3,26 +3,25 @@ Visualization of an array as rectangles of varying heights.
33"""
44
55class_name ArrayView
6- extends ViewportContainer
6+ extends HBoxContainer
77
8+ const MARGIN = 20
9+ const LINE_COLOR = Color ("7f1b5e20" )
10+ const BOX_SIZE = 50
811const ANIM_DURATION = 0.1
912
1013var _tween = Tween .new ()
1114var _level : ComparisonSort
1215var _rects = []
1316var _positions = []
14- var _viewport = Viewport .new ()
1517var _pointer = null
1618var _pointer_size : int
1719onready var _separation = 128 / _level .array .size
1820
1921func _init (level ):
2022 _level = level
21- stretch = true
22- _viewport .usage = Viewport .USAGE_2D
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 (_viewport )
2625
2726func _ready ():
2827 yield (get_tree (), "idle_frame" )
@@ -51,9 +50,8 @@ func _ready():
5150 _positions .append (x )
5251 x += unit_width
5352 _rects .append (rect )
54- _viewport . add_child (rect )
53+ add_child (rect )
5554 _level .array .connect ("swapped" , self , "_on_ArrayModel_swapped" )
56- _level .array .connect ("sorted" , self , "_on_ArrayModel_sorted" )
5755 if _level .has_method ("get_pointer" ):
5856 _pointer = Polygon2D .new ()
5957 _pointer .polygon = [
@@ -62,7 +60,7 @@ func _ready():
6260 Vector2 (width / 2 + _pointer_size , 0 ),
6361 ]
6462 _pointer .color = GlobalTheme .BLUE
65- _viewport . add_child (_pointer )
63+ add_child (_pointer )
6664
6765func _process (delta ):
6866 if _pointer != null :
@@ -90,10 +88,10 @@ func _on_ArrayModel_swapped(i, j):
9088 _rects [j ] = temp
9189 _tween .start ()
9290
93- func _on_ArrayModel_sorted ( i , j ):
94- for x in range ( i , j ):
95- _rects [ x ]. position . y = 0
96- for x in range (i , j ):
97- _tween . interpolate_property (
98- _rects [ x ], "position:y" , null , rect_size . y , ANIM_DURATION )
99- _tween . start ( )
91+ func _draw ( ):
92+ var width = rect_size . x + MARGIN
93+ var height = rect_size . y + MARGIN
94+ for i in range (- MARGIN + BOX_SIZE , width , BOX_SIZE ):
95+ draw_line ( Vector2 ( i , - MARGIN ), Vector2 ( i , height ), LINE_COLOR )
96+ for i in range ( - MARGIN + BOX_SIZE , height , BOX_SIZE ):
97+ draw_line ( Vector2 ( - MARGIN , i ), Vector2 ( width , i ), LINE_COLOR )
0 commit comments