Pour le moment et par manque de gameplay, je préfère choisir de ne pas limiter le prout de quelque manière que ce soit. J'ai donc délibérément supprimé du HUD la geauge de prout et aussi le fait que le prout se recharge. Maintenant les fromages sont juste des fromages. Une sorte de truc à ramasser mais qui sert à rien. Le gameplay après le juyce.
81 lines
2.6 KiB
GDScript
81 lines
2.6 KiB
GDScript
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()
|