Attualmente sto riprogettando il mio sistema Entity , per C ++ e ho molti manager. Nel mio design, ho queste classi, per legare insieme la mia biblioteca. Ho sentito un sacco di cose brutte quando si tratta di classi "manager", forse non sto nominando le mie classi in modo appropriato. Tuttavia, non ho idea di cos'altro chiamarli.
La maggior parte dei gestori, nella mia libreria, è composta da queste classi (anche se varia un po '):
- Contenitore: un contenitore per oggetti nel gestore
- Attributi - attributi per gli oggetti nel gestore
Nel mio nuovo design per la mia libreria, ho queste classi specifiche, al fine di legare insieme la mia libreria.
-
ComponentManager: gestisce i componenti nel sistema Entity
- ComponentContainer
- ComponentAttributes
- Scena * - un riferimento a una scena (vedi sotto)
-
SystemManager: gestisce i sistemi nel sistema Entity
- SystemContainer
- Scena * - un riferimento a una scena (vedi sotto)
-
EntityManager: gestisce le entità nel Entity System
- EntityPool - un pool di entità
- EntityAttributes - attributi di un'entità (questo sarà accessibile solo a classi ComponentContainer e System)
- Scena * - un riferimento a una scena (vedi sotto)
-
Scene - lega tutti i gestori insieme
- ComponentManager
- SystemManager
- EntityManager
Stavo pensando di mettere tutto il contenitore / i pool nella classe Scene stessa.
cioè.
Al posto di questo:
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();
Sarebbe questo:
Scene scene; // create a Scene
Entity entity = scene.getEntityPool().create();
Ma non sono sicuro. Se dovessi fare quest'ultimo, significherebbe che avrei un sacco di oggetti e metodi dichiarati all'interno della mia classe Scene.
NOTE:
- Un sistema di entità è semplicemente un progetto utilizzato per i giochi. È composto da 3 parti principali: componenti, entità e sistemi. I componenti sono semplicemente dati, che possono essere "aggiunti" alle entità, in modo che le entità siano distintive. Un'entità è rappresentata da un numero intero. I sistemi contengono la logica per un'entità, con componenti specifici.
- La ragione per cui sto cambiando il mio design per la mia libreria, è perché penso che possa essere cambiata parecchio, non mi piace la sensazione / flusso ad esso, al momento.