diff options
| author | Jan Tuomi <jan.tuomi@valuemotive.com> | 2020-08-01 16:39:38 +0300 |
|---|---|---|
| committer | Jan Tuomi <jan.tuomi@valuemotive.com> | 2020-08-01 16:39:38 +0300 |
| commit | 9dfb7f8037be735d5e5f88fb47ae07d98dc39274 (patch) | |
| tree | 866584e5ef71b91056a599a5a4b870cb38cb9bd5 /scripts | |
| parent | bc73f5f075540c2f60b3ec2e216a3ecda85fdfc3 (diff) | |
Move levels under a Game node
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/Game.gd | 42 | ||||
| -rw-r--r-- | scripts/Ladder.gd | 4 | ||||
| -rw-r--r-- | scripts/PlayerCharacter.gd | 10 |
3 files changed, 44 insertions, 12 deletions
diff --git a/scripts/Game.gd b/scripts/Game.gd new file mode 100644 index 0000000..e36fdfe --- /dev/null +++ b/scripts/Game.gd @@ -0,0 +1,42 @@ +extends Node +class_name Game +onready var gui: GUI = $CanvasLayer/GUI + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + update_debug_gui() + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + +func update_debug_gui(): + var current_level = $Level.get_filename() + gui.set_debug_text("Level: %s" % current_level) + +func _on_Level_ready(): + yield(get_tree(), "idle_frame") + update_debug_gui() + +func change_level(num: int): + var new_scene = "res://scenes/Level" + String(num) + ".tscn" + + var cur_level = $Level + self.remove_child(cur_level) + cur_level.call_deferred("free") + + var new_level_res = load(new_scene) + var new_level: Node = new_level_res.instance() + + print("Changed level to " + new_scene) + var err = new_level.connect("ready", self, "_on_Level_ready") + if err: + push_error(err) + + self.add_child(new_level) + new_level.set_name("Level") diff --git a/scripts/Ladder.gd b/scripts/Ladder.gd index c21752b..9c566da 100644 --- a/scripts/Ladder.gd +++ b/scripts/Ladder.gd @@ -18,5 +18,5 @@ func _ready(): func _on_Ladder_body_entered(body): if body is PlayerCharacter: - var player: PlayerCharacter = body - player.change_level(target_scene_num) + var game: Game = get_tree().get_root().get_node("Game") + game.call_deferred("change_level", target_scene_num) diff --git a/scripts/PlayerCharacter.gd b/scripts/PlayerCharacter.gd index 1df100c..3cf4518 100644 --- a/scripts/PlayerCharacter.gd +++ b/scripts/PlayerCharacter.gd @@ -65,13 +65,3 @@ func _physics_process(_delta): dialogue_active_with = coll.collider run_dialogue(coll.collider) break - -func change_level(num: int): - var new_scene = "res://scenes/Scene" + String(num) + ".tscn" - var gui: GUI = get_node(gui_node) - var success = get_tree().change_scene(new_scene) - if success == OK: - gui.set_debug_text("Level: %s" % num) - print("Changed level to " + new_scene) - else: - push_error("Failed to change level to " + new_scene) |
