using UnityEngine; namespace DanroJump.Gameplay { [RequireComponent(typeof(Collider2D))] public abstract class EnemyBase : MonoBehaviour, IEnemy, IPlayerContactHandler { public bool IsActive { get; private set; } protected virtual void OnEnable() { ActivateEnemy(); } protected virtual void OnDisable() { DeactivateEnemy(); } private void OnTriggerEnter2D(Collider2D other) { if (other.TryGetComponent(out JumpPlayerController player)) { HandlePlayerContact(player, this); } } private void OnCollisionEnter2D(Collision2D collision) { if (collision.collider.TryGetComponent(out JumpPlayerController player)) { HandlePlayerContact(player, this); } } public virtual void ActivateEnemy() { IsActive = true; } public virtual void DeactivateEnemy() { IsActive = false; } public virtual void ResetEnemy() { ActivateEnemy(); } public abstract void HandlePlayerContact(JumpPlayerController player, Component source); } }