neighbor-game/scripts/level_controller.gd
2022-08-08 15:32:57 -06:00

60 lines
2.0 KiB
GDScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

extends Node2D
var level_path := "res://scenes/level{num}.tscn"
var level1 = preload("res://scenes/level1.tscn")
var current_level_num = 1
var current_level : Node
var max_levels := 3
var level_win := false
onready var game_timer := $GameTimer
onready var game_screen_text := $GameScreenText
func setup_next_level():
if current_level_num == 1:
current_level = level1.instance()
add_child(current_level)
else:
var new_level_path = level_path.format({"num": current_level_num})
var next_level = load(new_level_path).instance()
add_child(next_level)
if current_level != null:
current_level.queue_free()
current_level = next_level
var current_base_level = current_level.get_node("BaseLevel") as BaseLevel
current_base_level.display_start(current_level_num, current_level_num == max_levels)
var err = current_base_level.connect("game_complete", self, "_on_level_complete")
print(err)
func _on_level_complete(is_win: bool) -> void:
print('Level complete')
level_win = is_win
if current_level_num == max_levels:
game_timer.start(3.5)
else:
game_timer.start(2)
current_level_num += 1
func _on_GameTimer_timeout() -> void:
print('Timer done')
if level_win and current_level_num <= max_levels:
setup_next_level()
elif not level_win:
var header := game_screen_text.get_node("ColorRect/VBoxContainer/HeaderText")
var body := game_screen_text.get_node("ColorRect/VBoxContainer/BodyText")
header.text = "Seems you got lost in the world of make believe"
body.text = "I don't blame you, its a beautiful place"
if current_level != null:
current_level.queue_free()
else:
var header := game_screen_text.get_node("ColorRect/VBoxContainer/HeaderText")
var body := game_screen_text.get_node("ColorRect/VBoxContainer/BodyText")
header.text = "Now go out and meet some real neighbors"
body.text = "'In a way, youve already won in this world because youre the only one who can be you.'\n-Mister Rogers"
if current_level != null:
current_level.queue_free()
func _on_GameScreenText_done_reading() -> void:
setup_next_level()