Skip to content

Commit 7c03e77

Browse files
committed
feat: remember data type between plays
1 parent 08640a1 commit 7c03e77

File tree

3 files changed

+23
-19
lines changed

3 files changed

+23
-19
lines changed

scenes/levels.tscn

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,19 +91,19 @@ script = ExtResource( 3 )
9191

9292
[node name="TypesContainer" type="MarginContainer" parent="Levels/Level/Right/Display"]
9393
visible = false
94-
margin_left = 218.0
95-
margin_top = 105.0
96-
margin_right = 398.0
97-
margin_bottom = 326.0
94+
margin_left = 288.0
95+
margin_top = 195.0
96+
margin_right = 328.0
97+
margin_bottom = 235.0
9898
size_flags_horizontal = 4
9999
size_flags_vertical = 4
100100
script = ExtResource( 3 )
101101

102102
[node name="Types" type="VBoxContainer" parent="Levels/Level/Right/Display/TypesContainer"]
103103
margin_left = 20.0
104104
margin_top = 20.0
105-
margin_right = 160.0
106-
margin_bottom = 201.0
105+
margin_right = 20.0
106+
margin_bottom = 20.0
107107
size_flags_horizontal = 4
108108
size_flags_vertical = 4
109109

scripts/levels.gd

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ const MAX_SIZE = 128
2121
var _index = LEVELS.find(GlobalScene.get_param("level"))
2222
var _level: ComparisonSort
2323
var _size = GlobalScene.get_param("size", ArrayModel.DEFAULT_SIZE)
24-
var _data_type = ArrayModel.DATA_TYPES.RANDOM_UNIQUE
24+
var _data_type = GlobalScene.get_param(
25+
"data_type", ArrayModel.DATA_TYPES.RANDOM_UNIQUE)
2526

2627
func _ready():
2728
var types = $Level/Right/Display/TypesContainer/Types
@@ -108,7 +109,7 @@ func _on_Timer_timeout():
108109

109110
func _on_Current_pressed():
110111
GlobalScene.change_scene("res://scenes/play.tscn",
111-
{"level": LEVELS[_index], "size": _size})
112+
{"level": LEVELS[_index], "size": _size, "data_type": _data_type})
112113

113114
func _on_Button_pressed(data_type):
114115
AudioServer.set_bus_mute(AudioServer.get_bus_index("Master"), false)

scripts/play.gd

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
extends VBoxContainer
22

33
var _start_time = -1
4-
var _level = GlobalScene.get_param(
5-
"level", preload("res://scripts/levels.gd").LEVELS[0])
4+
var _level = GlobalScene.get_param("level").new(ArrayModel.new(
5+
GlobalScene.get_param("size"), GlobalScene.get_param("data_type")))
66

77
func _ready():
88
set_process(false)
9-
$HUDBorder/HUD/Level.text = _level.new(ArrayModel.new()).NAME
9+
$HUDBorder/HUD/Level.text = _level.NAME
10+
_level.connect("done", self, "_on_Level_done")
1011

1112
func _process(delta):
1213
$HUDBorder/HUD/Score.text = "%.3f" % get_score()
@@ -15,11 +16,8 @@ func _on_Timer_timeout():
1516
set_process(true)
1617
_start_time = OS.get_ticks_msec()
1718
$Display/Label.queue_free() # Delete ready text
18-
var level = _level.new(ArrayModel.new(
19-
GlobalScene.get_param("size", ArrayModel.DEFAULT_SIZE)))
20-
level.connect("done", self, "_on_Level_done", [level])
21-
$Display.add_child(ArrayView.new(level))
22-
level.set_process_input(true)
19+
$Display.add_child(ArrayView.new(_level))
20+
_level.set_process_input(true)
2321

2422
func get_score():
2523
return stepify((OS.get_ticks_msec() - _start_time) / 1000.0, 0.001)
@@ -28,7 +26,7 @@ func _input(event):
2826
if event.is_action_pressed("ui_cancel"):
2927
_on_Button_pressed("levels")
3028

31-
func _on_Level_done(level):
29+
func _on_Level_done():
3230
set_process(false)
3331
var time = get_score()
3432
var restart = Button.new()
@@ -41,6 +39,10 @@ func _on_Level_done(level):
4139
back.connect("pressed", self, "_on_Button_pressed", ["levels"])
4240
var score = Label.new()
4341
score.text = "%.3f" % time
42+
if GlobalScene.get_param("data_type") != ArrayModel.DATA_TYPES.RANDOM_UNIQUE:
43+
score.text += " (only random unique data counts toward a high score!)"
44+
else:
45+
GlobalScore.save_score(_level.NAME, _level.array.size, time)
4446
score.align = Label.ALIGN_RIGHT
4547
score.size_flags_horizontal = Control.SIZE_EXPAND_FILL
4648
$HUDBorder/HUD/Level.queue_free()
@@ -50,8 +52,9 @@ func _on_Level_done(level):
5052
$HUDBorder/HUD.add_child(back)
5153
$HUDBorder/HUD.add_child(score)
5254
restart.grab_focus()
53-
GlobalScore.save_score(level.NAME, level.array.size, time)
5455

5556
func _on_Button_pressed(scene):
5657
GlobalScene.change_scene("res://scenes/" + scene + ".tscn",
57-
{"level": _level, "size": GlobalScene.get_param("size")})
58+
{"level": GlobalScene.get_param("level"),
59+
"size": GlobalScene.get_param("size"),
60+
"data_type": GlobalScene.get_param("data_type")})

0 commit comments

Comments
 (0)