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,32 @@
class_name RequirementComponent
extends Node
@export var requirement_type: CollectableResource.CollectableType
@export var required_amount: int = 1
var current_amount: int = 0
signal requirement_met(requirement_type: CollectableResource.CollectableType)
@onready var gm: GM = $"/root/GameManager"
func _ready() -> void:
if not gm:
printerr("RequirementComponent: GameManager not found.")
return
var collectables: Array[CollectableComponent] = gm.get_colllectable_nodes()
for collectable in collectables:
collectable.collected.connect(on_collected)
func on_collected(amount: int, type: CollectableResource.CollectableType) -> void:
print("Collected: ", amount, " of type: ", str(type))
if type != requirement_type:
return
add_progress(amount)
func add_progress(amount: int = 1) -> void:
current_amount += amount
if current_amount >= required_amount:
requirement_met.emit(requirement_type)