Il est maintenant possible d'avoir des niveaux indépendants et de switcher de l'un à l'autre en utilisant une porte. La porte doit indiquer le nom du niveau suivant et ensuite dans game.gd un mapping statique permet de passer d'un niveau à l'autre. Les limitations actuelles et la todo liste: - La princesse spawn toujours au même endroit, elle devrait spawner par la porte qui l'a fait venir et bien sur dans la carte pas dans le vide à côté. - On perds l'état du niveau quand on meurt, il faut que ça change dans le futur, c'est pas préssé ceci dit. - Le niveau devrait s'inscire automatiquement à l'événement de mort de la princesse pour pas oublier de le faire à chaque fois. En tout cas, ce chantier va permettre de travailler des niveaux indépendament les uns des autres et paralléliser si on veut être plusieurs à tweaker en parallèle.
39 lines
1.1 KiB
GDScript
39 lines
1.1 KiB
GDScript
class_name Game extends Node
|
|
|
|
|
|
var current_scene : Node
|
|
var level0 = preload("res://levels/level_0.tscn")
|
|
var level1 = preload("res://levels/level_1.tscn")
|
|
|
|
var scene_name = "level_0"
|
|
var current_scence
|
|
var prev_scene
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready() -> void:
|
|
go_to(scene_name)
|
|
|
|
func reload_current_scene() -> void:
|
|
go_to(scene_name)
|
|
|
|
func enter_door(destination):
|
|
call_deferred("go_to", destination)
|
|
|
|
func go_to(destination):
|
|
if current_scence:
|
|
remove_child(current_scence)
|
|
|
|
if destination == "level_1":
|
|
current_scence = level1.instantiate()
|
|
scene_name = "level_1"
|
|
elif destination == "level_0":
|
|
current_scence = level0.instantiate()
|
|
scene_name = "level_0"
|
|
|
|
current_scence.connect("reload_me", reload_current_scene, ConnectFlags.CONNECT_ONE_SHOT)
|
|
var doors :Node = current_scence.find_child("Doors")
|
|
if doors:
|
|
for door in doors.get_children():
|
|
door.connect("door_openned", enter_door, ConnectFlags.CONNECT_ONE_SHOT)
|
|
add_child(current_scence)
|