using System; using System.Collections.Generic; using System.Linq; namespace Encompass { public abstract class Renderer { internal EntityManager entityManager; internal ComponentManager componentManager; internal void AssignEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } internal void AssignComponentManager(ComponentManager componentManager) { this.componentManager = componentManager; } protected bool EntityExists(Guid entityID) { return entityManager.EntityExists(entityID); } protected Entity GetEntity(Guid entityID) { return entityManager.GetEntity(entityID); } protected Guid GetEntityIDByComponentID(Guid componentID) { return componentManager.GetEntityIDByComponentID(componentID); } protected Entity GetEntityByComponentID(Guid componentID) { return GetEntity(GetEntityIDByComponentID(componentID)); } protected IEnumerable> ReadComponents() where TComponent : struct, IComponent { return componentManager.GetComponentsByType(); } protected ValueTuple ReadComponent() where TComponent : struct, IComponent { return ReadComponents().First(); } protected IEnumerable> GetComponents(Entity entity) where TComponent : struct, IComponent { return componentManager.GetComponentsByEntityAndType(entity.ID); } protected ValueTuple GetComponent(Entity entity) where TComponent : struct, IComponent { return GetComponents(entity).First(); } protected bool HasComponent(Entity entity) where TComponent : struct, IComponent { return componentManager.EntityHasComponentOfType(entity.ID); } protected bool SomeComponent() where TComponent : struct, IComponent { return componentManager.ComponentOfTypeExists(); } } }