using System.Collections;
using System.Threading.Tasks;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ItemEffectManager : MonoBehaviour
{
    public void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {

    }

    public void ItemUse(ItemInstance item)
    {
        if(item.Data.ItemEffectType == ItemEffectType.INTERVAL_DAMAGE)
        {
            IntervalDamageHealthEffect(GameManager.Instance.Level.CurrentCharacter.GetComponent<Health>(), item.Data.IntervalDamage, item.Data.IntervalDamageTime, item.Data.ItemEffectVisual);
        }
    }

    public void IntervalDamageHealthEffect(Health health,float damage,float time,GameObject itemEffectVisual)
    {
        IntervalDamage(health, damage,time, itemEffectVisual);
    }

    //일정 시간 동안 틱대미지 일으키는 함수
    public async void IntervalDamage(Health health, float damage,float time, GameObject itemEffectVisual)
    {
        GameObject fx_Visual = Instantiate(itemEffectVisual, health.transform); // health의 자식으로 이펙트 생성
        fx_Visual.transform.localPosition = new Vector3(0, 1.5f, 0);
        
        float tickDamage = damage / time;
        while(time <=0)
        {
            health.ChangeHP(Mathf.FloorToInt(tickDamage)); //소수점 전부 버림
            if (health.CurrentHP <= 0) break;
            time--;
            await Task.Yield();
        }
        Destroy(fx_Visual);
    }
}
