class_name Game extends Node @onready var hud := $HUD as HUD var current_scene : Node var destination_map = { "level_0":preload("res://levels/level_0.tscn"), "level_1":preload("res://levels/level_1.tscn"), "level_2":preload("res://levels/level_2.tscn"), "level_3":preload("res://levels/level_3.tscn"), "level_4":preload("res://levels/level_4.tscn"), "level_p1":preload("res://levels/level_p1.tscn") } @export var scene_name = "level_0" var current_scence var prev_scene var last_spawn_point = null var princesse : Princess = null var goto_destination var goto_spawn_point # Called when the node enters the scene tree for the first time. func _ready() -> void: go_to(scene_name, null) func reload_current_scene() -> void: go_to(scene_name, last_spawn_point) hud.reset() func enter_door(destination : String, other_side_position : Vector2): call_deferred("go_to", destination, other_side_position) func go_to(destination : String, spawn_point): goto_destination = destination goto_spawn_point = spawn_point hud.begin_scene_transition() func _on_hud_screen_is_black() -> void: var destination = goto_destination var spawn_point = goto_spawn_point var old_princesse :Princess = null if current_scence: old_princesse = current_scence.find_child("Princesse") old_princesse.disconnect("cheese_collected", hud.got_cheese) old_princesse.disconnect("lactase_collected", hud.got_lactase) old_princesse.disconnect("dash_fart", hud.dash) #old_princesse.disconnect("princess_is_dead", princess_death) remove_child(current_scence) current_scence = destination_map[destination].instantiate() scene_name = destination 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) princesse= current_scence.find_child("Princesse") if spawn_point: princesse.position = spawn_point last_spawn_point = spawn_point if old_princesse: princesse.copy_from(old_princesse) princesse.connect("cheese_collected", hud.got_cheese) princesse.connect("lactase_collected", hud.got_lactase) princesse.connect("dash_fart", hud.dash) #princesse.connect("princess_is_dead", princess_death) hud.end_scene_transition() func _on_hud_screen_is_ready() -> void: princesse.go_out_and_play()