canto/Assets/Scripts/Entity/Damage.cs
2025-08-02 14:34:29 -04:00

35 lines
798 B
C#

using KitsuneCafe.System;
using UnityEngine;
namespace KitsuneCafe.Entity
{
public interface IDamaging : IGameObject
{
void ApplyDamage(int amount, IDamageable target);
}
public interface IDamageable : IGameObject
{
void ReceiveDamage(IDamaging source, int amount);
}
public class DamageSource : MonoBehaviour, IDamaging
{
[SerializeField]
private int damage;
public void ApplyDamage(int amount, IDamageable target)
{
target.ReceiveDamage(this, amount);
}
public void ApplyDamage(int amount, GameObject target)
{
if (target.TryGetComponent(out IDamageable damageable))
{
ApplyDamage(amount, damageable);
}
}
}
}