Actualmente estoy rediseñando mi Sistema de Entidades , para C ++, y tengo muchos Gerentes. En mi diseño, tengo estas clases, para unir mi biblioteca. He escuchado muchas cosas malas cuando se trata de clases de "gerente", quizás no estoy nombrando mis clases apropiadamente. Sin embargo, no tengo idea de qué más nombrarlos.
La mayoría de los gerentes, en mi biblioteca, se componen de estas clases (aunque varía un poco):
- Contenedor: un contenedor para objetos en el administrador
- Atributos: atributos para los objetos en el administrador
En mi nuevo diseño para mi biblioteca, tengo estas clases específicas, para unir mi biblioteca.
ComponentManager: administra componentes en el Sistema de entidades
- ComponentContainer
- Atributos de componente
- Escena *: una referencia a una escena (ver más abajo)
SystemManager: administra sistemas en el sistema de entidades
- Contenedor de sistema
- Escena *: una referencia a una escena (ver más abajo)
EntityManager: administra entidades en el sistema de entidades
- EntityPool - un grupo de entidades
- Atributos de entidad: atributos de una entidad (esto solo será accesible para las clases ComponentContainer y System)
- Escena *: una referencia a una escena (ver más abajo)
Escena: une a todos los gerentes
- ComponentManager
- Administrador de sistemas
- EntityManager
Estaba pensando en poner todos los contenedores / piscinas en la clase Scene.
es decir
En lugar de esto:
Scene scene; // create a Scene
// NOTE:
// I technically could wrap this line in a createEntity() call in the Scene class
Entity entity = scene.getEntityManager().getPool().create();
Sería esto:
Scene scene; // create a Scene
Entity entity = scene.getEntityPool().create();
Pero no estoy seguro. Si tuviera que hacer esto último, eso significaría que tendría muchos objetos y métodos declarados dentro de mi clase de escena.
NOTAS
- Un sistema de entidad es simplemente un diseño que se utiliza para juegos. Se compone de 3 partes principales: componentes, entidades y sistemas. Los componentes son simplemente datos, que pueden "agregarse" a las entidades, para que las entidades sean distintivas. Una entidad está representada por un número entero. Los sistemas contienen la lógica de una entidad, con componentes específicos.
- La razón por la que estoy cambiando mi diseño para mi biblioteca es porque creo que se puede cambiar bastante, no me gusta la sensación / flujo en este momento.