Skip to content

Commit bef3376

Browse files
committed
feat: add player-selectable array size
The player can now select the length of the level by changing it on the level selection screen.
1 parent 64625df commit bef3376

File tree

5 files changed

+26
-9
lines changed

5 files changed

+26
-9
lines changed

models/array_model.gd

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ signal removed(i)
66
signal swapped(i, j)
77
signal sorted(i, j)
88

9+
const DEFAULT_SIZE = 16
10+
911
var _array = []
1012
var size = 0 setget , get_size
1113
var biggest = null
1214

13-
func _init(size=16):
15+
func _init(size=DEFAULT_SIZE):
1416
"""Randomize the array."""
1517
for i in range(1, size + 1):
1618
_array.append(i)

scripts/levels.gd

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ const MAX_WAIT = 4
1111
const MIN_SIZE = 8
1212
const MAX_SIZE = 128
1313

14-
var _level = LEVELS[0].new(ArrayModel.new())
14+
var _level = LEVELS[0].new(ArrayModel.new(
15+
GlobalScene.get_param("size", ArrayModel.DEFAULT_SIZE)))
1516

1617
func _ready():
1718
for level in LEVELS:
@@ -54,7 +55,9 @@ func _on_Button_focus_entered(size=_level.array.size):
5455
$Preview/Display.add_child(ArrayView.new(_level))
5556

5657
func _input(event):
57-
if event.is_action_pressed("faster"):
58+
if event.is_action_pressed("ui_cancel"):
59+
GlobalScene.change_scene("res://scenes/menu.tscn")
60+
elif event.is_action_pressed("faster"):
5861
$Timer.wait_time = max(MIN_WAIT, $Timer.wait_time / 2)
5962
elif event.is_action_pressed("slower"):
6063
$Timer.wait_time = min(MAX_WAIT, $Timer.wait_time * 2)
@@ -64,7 +67,8 @@ func _input(event):
6467
_on_Button_focus_entered(max(MIN_SIZE, _level.array.size / 2))
6568

6669
func _on_Button_pressed(level):
67-
GlobalScene.change_scene("res://scenes/play.tscn", {"level": level})
70+
GlobalScene.change_scene("res://scenes/play.tscn",
71+
{"level": level, "size": _level.array.size})
6872

6973
func _get_level(name):
7074
for level in LEVELS:

scripts/menu.gd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,7 @@ func _on_Credits_pressed():
1616

1717
func _on_Timer_timeout():
1818
_level.next(null)
19+
20+
func _input(event):
21+
if event.is_action_pressed("ui_cancel"):
22+
get_tree().quit()

scripts/play.gd

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
extends VBoxContainer
22

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

57
func _ready():
6-
$HUDBorder/HUD/Level.text = GlobalScene.get_param("level").NAME
8+
$HUDBorder/HUD/Level.text = _level.NAME
79

810
func _process(delta):
911
if _start_time >= 0:
@@ -12,13 +14,18 @@ func _process(delta):
1214
func _on_Timer_timeout():
1315
_start_time = OS.get_ticks_msec()
1416
$DisplayBorder/Label.queue_free() # Delete ready text
15-
var level = GlobalScene.get_param("level").new(ArrayModel.new())
17+
var level = _level.new(ArrayModel.new(
18+
GlobalScene.get_param("size", ArrayModel.DEFAULT_SIZE)))
1619
level.connect("done", self, "_on_Level_done")
1720
$DisplayBorder.add_child(ArrayView.new(level))
1821

1922
func get_score():
2023
return stepify((OS.get_ticks_msec() - _start_time) / 1000.0, 0.001)
2124

25+
func _input(event):
26+
if event.is_action_pressed("ui_cancel"):
27+
_on_Button_pressed("levels")
28+
2229
func _on_Level_done():
2330
var restart = Button.new()
2431
restart.text = "RESTART LEVEL"
@@ -43,4 +50,4 @@ func _on_Level_done():
4350

4451
func _on_Button_pressed(scene):
4552
GlobalScene.change_scene("res://scenes/" + scene + ".tscn",
46-
{"level": GlobalScene.get_param("level")})
53+
{"level": _level, "size": GlobalScene.get_param("size")})

scripts/scene.gd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ func change_scene(next_scene, params=null):
1010
_params = params
1111
get_tree().change_scene(next_scene)
1212

13-
func get_param(name):
13+
func get_param(name, default=null):
1414
if _params != null and _params.has(name):
1515
return _params[name]
16-
return null
16+
return default

0 commit comments

Comments
 (0)