Add collectable types and implement level unlocking mechanics; enhance player state management
This commit is contained in:
32
scripts/components/requirement_component.gd
Normal file
32
scripts/components/requirement_component.gd
Normal 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)
|
Reference in New Issue
Block a user