Encounter / Assets / Scripts / GUIHandlers / ModifierHelper.cs
ModifierHelper.cs
Raw
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class ModifierHelper : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    [SerializeField] private GameObject mod_Helper_Prefab;

    private GameObject activeHelper;
    private Modifier modifier;
    private int turnsLeft;

    public string ModifierName 
    {
        get => modifier.Name;
    }
    public void CallTurnDecrement()
    {
        --turnsLeft;

        if (turnsLeft is 0)
            Destroy(this.gameObject);
    }
    public void InjectModifier(Modifier m, int turnsActive)
    {
        modifier = m;
        turnsLeft = turnsActive;
    }
    public void OnPointerEnter(PointerEventData eventData)
    {
        if (activeHelper == null)
        {
            activeHelper = Instantiate(mod_Helper_Prefab);
            activeHelper.GetComponent<HelperUI>().InjectModifierInfo(modifier, turnsLeft);
        }
    }
    public void OnPointerExit(PointerEventData eventData)
    {
        if (activeHelper != null)
            DestroyImmediate(activeHelper);
    }
    private void OnDisable()
    {
        if (activeHelper != null)
            DestroyImmediate(activeHelper);
    }
    private void OnDestroy()
    {
        if (activeHelper != null)
            DestroyImmediate(activeHelper);
    }
    public void DestroyModifierEarly()
        => Destroy(this.gameObject);
}