AsteroidGame/Assets/Entities/Scripts/EntityBase.cs

51 lines
1.2 KiB
C#

using AsteroidGame.ScriptableObjects;
using GameDev.CoreSystems;
using UnityEngine;
namespace AsteroidGame.Entities
{
public class EntityBase : MonoBehaviour
{
[field: Header("Damageable")]
[field: SerializeField] public Damageable Damageable { get; set; }
[field: Header("Targetable")]
[field: SerializeField] public Targetable Targetable { get; set; }
[Header("UI")]
[SerializeField] protected string _uiFriendlyName;
[Space]
[SerializeField] private SoEntityBaseRuntimeSet _entityBaseSet;
#region Props
public string UiFriendlyName => _uiFriendlyName;
#endregion
protected virtual void OnEnable()
{
_entityBaseSet.Add(this);
InitializeDamageable();
InitializeTargetable();
}
protected virtual void OnDisable()
{
_entityBaseSet.Remove(this);
}
private void InitializeTargetable()
{
Targetable = gameObject.AddComponent<Targetable>();
}
private void InitializeDamageable()
{
Damageable = gameObject.AddComponent<Damageable>();
}
}
}