Add collectable types and implement level unlocking mechanics; enhance player state management

This commit is contained in:
2025-05-03 07:03:44 +02:00
parent 4e5427e731
commit c58cc7da88
19 changed files with 255 additions and 24 deletions

View File

@@ -0,0 +1,34 @@
class_name ExitDoorComponent
extends Node
@export var locked: bool = true
@export var exit_area: Area2D
@export var door_sprite: Sprite2D
@export var opened_door_sfx: AudioStreamPlayer2D
@export var opened_door_frame: int = 0
signal exit_triggered
@onready var gm: GM = $"/root/GameManager"
func _ready() -> void:
if not exit_area:
printerr("ExitDoorComponent: exit_area is not set.")
return
exit_area.body_entered.connect(on_exit_area_body_entered)
func unlock() -> void:
locked = false
if door_sprite:
door_sprite.frame = opened_door_frame
if opened_door_sfx:
opened_door_sfx.play()
func on_exit_area_body_entered(_body: Node2D) -> void:
if locked:
return
exit_triggered.emit()
gm.try_to_go_to_next_level()