using Intrepid.SimpleEvents;
using Intrepid.Utilities;
using Intrepid.Utilities.Updatable;
using UnityEngine;

namespace Intrepid.Core.Entities
{
    public abstract class EntityBrain : EventListener, IUpdatable
    {
        [GroupInjections, SerializeField] private Entity rootEntity;
        
        public string Id => SubscriptionId;
        protected Entity RootEntity => rootEntity;
        
        public abstract void UpdateFromUpdatable();
        public abstract void LateUpdateFromUpdatable();
        public abstract void FixedUpdateFromUpdatable();
    }
}