using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Player : MonoBehaviour
{
    public float speed = 5f; // Speed of character movement
    public int maxHealth = 3; // Maximum player health
    public int currentHealth; // Current player health

    private Animator anim;
    private bool isInvincible = false; // Flag to track invincibility state
    private float invincibleTimer = 2f; // Duration of invincibility in seconds

    private void Start()
    {
        anim = GetComponent<Animator>();
        currentHealth = maxHealth; // Set the initial health to maxHealth value

        StartCoroutine(StartInvincibility());
    }

    private void Update()
    {
        // Move character based on input axes
        float horizontalInput = Input.GetAxis("Horizontal");
        float verticalInput = Input.GetAxis("Vertical");

        // Calculate movement direction
        Vector2 movement = new Vector2(horizontalInput, verticalInput) * speed * Time.deltaTime;

        // Apply movement to the character’s position
        transform.Translate(movement);

        anim.SetFloat("moveX", movement.x);
        anim.SetFloat("moveY", movement.y);
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        // Check if the player collides with an enemy or boss and is not invincible
        if ((collision.gameObject.CompareTag("Enemy") || collision.gameObject.CompareTag("Boss")) && !isInvincible)
        {
            TakeDamage(1); // Deduct 1 health point

            if (currentHealth <= 0)
            {
                ResetScene(); // Reset the scene if health reaches 0
            }
            else
            {
                StartCoroutine(StartInvincibility()); // Start the invincibility timer
            }
        }

        // Check if the player collides with a health object
        if (collision.gameObject.CompareTag("Health"))
        {
            AddHealth(1); // Increase health by 1
            Destroy(collision.gameObject); // Destroy the health object
        }

        // Check if the player collides with the bomb
        if (collision.gameObject.CompareTag("Bomb"))
        {
            Bomb bomb = collision.gameObject.GetComponent<Bomb>();

            bomb.Explode(); // Trigger bomb explosion on the player
        }
    }

    public void TakeDamage(int amount)
    {
        currentHealth -= amount; // Deduct the specified amount from the current health

        if (currentHealth <= 0)
        {
            ResetScene(); // Reset the scene if health reaches 0
        }
    }

    public void AddHealth(int amount)
    {
        currentHealth += amount; // Increase the current health by the specified amount
        currentHealth = Mathf.Min(currentHealth, maxHealth); // Ensure current health doesn’t exceed max health
    }

    private void ResetScene()
    {
        SceneManager.LoadScene("Level1");
    }

    private IEnumerator StartInvincibility()
    {
        isInvincible = true; // Set the invincibility flag to true

        yield return new WaitForSeconds(invincibleTimer); // Wait for the specified duration

        isInvincible = false; // Set the invincibility flag back to false
    }
}
i changed the sprite of the bomb, why when it explodes or the player collides with it is it not doing damage?