Atualmente, estou redesenhando meu Sistema de Entidades , para C ++, e tenho muitos Gerentes. No meu design, eu tenho essas classes, para amarrar minha biblioteca. Ouvi muitas coisas ruins quando se trata de aulas de "gerente", talvez eu não esteja nomeando minhas aulas adequadamente. No entanto, não tenho mais idéia de como nomeá-los.
A maioria dos gerentes, na minha biblioteca, é composta dessas classes (embora varie um pouco):
- Contêiner - um contêiner para objetos no gerenciador
- Atributos - atributos para os objetos no gerenciador
No meu novo design para minha biblioteca, tenho essas classes específicas, a fim de vincular minha biblioteca.
ComponentManager - gerencia componentes no Sistema de entidades
- ComponentContainer
- ComponentAttributes
- Cena * - uma referência a uma Cena (veja abaixo)
SystemManager - gerencia sistemas no Sistema de entidades
- SystemContainer
- Cena * - uma referência a uma Cena (veja abaixo)
EntityManager - gerencia entidades no sistema de entidades
- EntityPool - um conjunto de entidades
- EntityAttributes - atributos de uma entidade (isso só estará acessível às classes ComponentContainer e System)
- Cena * - uma referência a uma Cena (veja abaixo)
Cena - une todos os gerentes
- ComponentManager
- SystemManager
- EntityManager
Eu estava pensando em colocar todos os contêineres / piscinas na própria classe Scene.
ie
Em vez disso:
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();
Seria o seguinte:
Scene scene; // create a Scene
Entity entity = scene.getEntityPool().create();
Mas não tenho certeza. Se eu fizesse o último, isso significaria que eu teria muitos objetos e métodos declarados dentro da minha classe Scene.
NOTAS:
- Um sistema de entidades é simplesmente um design usado para jogos. É composto por três partes principais: componentes, entidades e sistemas. Os componentes são simplesmente dados, que podem ser "adicionados" às entidades, para que as entidades sejam distintas. Uma entidade é representada por um número inteiro. Os sistemas contêm a lógica de uma entidade, com componentes específicos.
- A razão pela qual estou mudando meu design para minha biblioteca é porque acho que pode ser alterado bastante, não gosto da sensação / fluxo dela no momento.