diff options
Diffstat (limited to '')
-rw-r--r-- | godot/scenes/Game.gd | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/godot/scenes/Game.gd b/godot/scenes/Game.gd new file mode 100644 index 0000000..f24219e --- /dev/null +++ b/godot/scenes/Game.gd @@ -0,0 +1,87 @@ +extends Spatial + +const NUM_LEVELS = 9 +const PAR = [1,2,3,4,5,6,7,8,9] + +# level control +var current_level_id = 0 +var levels = [] +var post_game = false + +# stroke control +var current_strokes = 0 +var strokes_per_level = [0,0,0,0,0,0,0,0,0] + +# Called when the node enters the scene tree for the first time. +func _ready(): + for i in range(NUM_LEVELS): + levels.append(get_node("/root/Game/Level%d" % (i+1))) + + current_strokes = 0 + levels[0].show() + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + if Input.is_action_just_pressed("ui_cancel"): + get_tree().paused = true + $PausePopup.show() + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + + + +func _on_QuitButton_pressed(): + get_tree().quit() + + +func _on_ResumeButton_pressed(): + $PausePopup.hide() + get_tree().paused = false + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + + +func end_level(): + # save current strokes and reset + strokes_per_level[current_level_id] = current_strokes + current_strokes = 0 + + post_game = true + + open_scoreboard() + + +func add_stroke(): + current_strokes += 1 + + +func revoke_stroke(): + current_strokes -= 1 + + +func open_scoreboard(): + $Scoreboard.update_values(strokes_per_level, PAR) + $Scoreboard.show() + + +func close_scoreboard(): + $Scoreboard.hide() + + +func is_post_game(): + return post_game + + +func next_level(): + post_game = false + + levels[current_level_id].hide() + current_level_id = current_level_id + 1 + + if current_level_id >= NUM_LEVELS: + # TODO load main menu + return + + # load next level + levels[current_level_id].show() + + close_scoreboard() |