extends Node

var myBox = preload("res://scenes/crate.tscn")
@onready var box_trap = $"../BoxTrap"
@onready var timer = $Timer
@onready var player = $"../CharacterBody2D"
@onready var coins = $"../Coins"
@onready var enemies = $"../Enemies"
@onready var ui = $"../CanvasLayer/Control"

# Called when the node enters the scene tree for the first time.
func _ready():
	GameManager.resetPlayer()

	for n in coins.get_children():
		if n is Coin:
			#wire up our listener
			n.coinCollected.connect(_on_area_2d_coin_collected)
	for n in enemies.get_children():
		if n is Enemy:
			n.playerDamage.connect(playerDamage)

# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
	if GameManager.player.currentHealth <= 0 and player.living:
		player.defeated()
		timer.start()

func _on_area_2d_areatrigger(effect, body):
	print("Game Controller sees the trigger " + effect)
	match effect:
		"alert":
			for n in 5:
				var box = myBox.instantiate()
				owner.add_child(box)
				box.transform = box_trap.global_transform

func resetWorld():
	get_tree().reload_current_scene()

func _on_area_2d_coin_collected():
	GameManager.coinCollected()
	ui.coinsUpdate(GameManager.coinsCollectedTotal)

func playerDamage():
	GameManager.playerDamage()
	ui.healthUpdate(GameManager.player.currentHealth)
