Sto cercando di imparare come produrre codice orientato agli oggetti di qualità e ho studiato concetti come SOLID. Attualmente sto lavorando a un sistema di processori entità-componente per un piccolo motore di gioco.
Attualmente, l'ho implementato come tale:
- C'è un
ScreenStack
che contiene una pila diScreen
s - Ogni
Screen
haEntityManager
eProcessManager
. - Il
ProcessManager
aggiorna tuttoProcess
es dati entità daEntityManager
. - Un
Process
gestisce tutte le logiche di gioco, quindi deve essere in grado di usareScreenStack
per possibilmente schermate push e pop. Può anche creare, rimuovere e modificare entità, quindi ha bisogno delEntityManager
daScreen
. Fondamentalmente unProcess
ha bisogno di sapere tutto sul gioco poiché ne influenza moltissimo, ma sembra sbagliato.
Come faccio a implementarlo meglio? Sembra che tutto abbia una chiara gerarchia delle dipendenze fino a quando non arrivi a un processo, dove viene espulso dalla finestra.
Sembra anche che ci sia un accoppiamento stretto quando vorrei spingere un nuovo schermo. Ad esempio, ho un processo in una schermata MainMenu
che controlla la scelta del menu. Se viene cliccato "Nuovo gioco", ho bisogno di premere un nuovo schermo, che viene creato in quel momento. Ho letto che non dovrei lanciare in modo casuale new
che sembra stia facendo.