using Godot;
using System;
using System.Diagnostics;

public partial class Fragola : RigidBody2D
{
	[Signal]
	public delegate void HitEventHandler();

	private AnimatedSprite2D _animatedSprite;

	private bool _isAlive = true;

	// Called when the node enters the scene tree for the first time.
	public override void _Ready()
	{
		_animatedSprite = GetNode<AnimatedSprite2D>("./AnimatedSprite2D");
	}

	// Called every frame. 'delta' is the elapsed time since the previous frame.
	public override void _Process(double delta)
	{
	}

	private void _on_body_entered(Node body)
	{
		Debug.WriteLine("Collision");

		EmitSignal(SignalName.Hit);

	}
	private void _on_area_2d_area_entered(Area2D area)
	{
		// Replace with function body.
		Debug.WriteLine("Collision area");
		EmitSignal(SignalName.Hit);

		if (_isAlive)
		{
			Explode();
		}
	}

	private void Explode()
	{
		_isAlive = false;
		_animatedSprite.Play("explode");

		//Hide();
		DisableCollision();
	}

	private void DisableCollision()
	{
		// Must be deferred as we can't change physics properties on a physics callback.
		GetNode<CollisionShape2D>("CollisionShape2D").SetDeferred(CollisionShape2D.PropertyName.Disabled, true);
	}
}
