53 lines
1.2 KiB
C#
53 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;
|
|
|
|
|
|
#region Props
|
|
|
|
public string UiFriendlyName => _uiFriendlyName;
|
|
|
|
#endregion
|
|
|
|
private void Awake()
|
|
{
|
|
InitializeDamageable();
|
|
|
|
InitializeTargetable();
|
|
|
|
AssignDamageable();
|
|
}
|
|
|
|
private void InitializeDamageable()
|
|
{
|
|
if (Damageable != null) return;
|
|
Damageable = gameObject.AddComponent<Damageable>();
|
|
}
|
|
|
|
private void InitializeTargetable()
|
|
{
|
|
if (Targetable != null) return;
|
|
Targetable = gameObject.AddComponent<Targetable>();
|
|
}
|
|
|
|
private void AssignDamageable()
|
|
{
|
|
if (Targetable.Damageable != null) return;
|
|
|
|
Targetable.Damageable = Damageable;
|
|
}
|
|
}
|
|
} |