Obecnie projektuję mój system Entity dla C ++ i mam wielu menedżerów. W moim projekcie mam te klasy, aby związać moją bibliotekę. Słyszałem wiele złych rzeczy, jeśli chodzi o zajęcia „menedżerskie”, być może nie nazywam odpowiednio moich zajęć. Nie mam jednak pojęcia, jak inaczej je nazwać.
Większość menedżerów w mojej bibliotece składa się z tych klas (choć nieco się różni):
- Kontener - pojemnik na obiekty w menedżerze
- Atrybuty - atrybuty obiektów w menedżerze
W nowym projekcie mojej biblioteki mam te konkretne klasy, aby związać moją bibliotekę.
ComponentManager - zarządza komponentami w systemie encji
- ComponentContainer
- ComponentAttributes
- Scena * - odniesienie do Sceny (patrz poniżej)
SystemManager - zarządza systemami w systemie Entity
- SystemContainer
- Scena * - odniesienie do Sceny (patrz poniżej)
EntityManager - zarządza jednostkami w Systemie Entity
- EntityPool - pula encji
- EntityAttributes - atrybuty bytu (będzie to dostępne tylko dla klas ComponentContainer i System)
- Scena * - odniesienie do Sceny (patrz poniżej)
Scena - łączy wszystkich menedżerów razem
- ComponentManager
- Menadżer systemu
- EntityManager
Myślałem o umieszczeniu wszystkich kontenerów / basenów w samej klasie Scene.
to znaczy
Zamiast tego:
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();
Byłoby to:
Scene scene; // create a Scene
Entity entity = scene.getEntityPool().create();
Ale nie jestem pewien. Gdybym miał zrobić to drugie, oznaczałoby to, że miałbym wiele obiektów i metod zadeklarowanych w mojej klasie Scene.
UWAGI:
- System encji to po prostu projekt wykorzystywany w grach. Składa się z 3 głównych części: komponentów, bytów i systemów. Składniki to po prostu dane, które mogą być „dodawane” do bytów, aby były one odróżniające. Obiekt jest reprezentowany przez liczbę całkowitą. Systemy zawierają logikę jednostki z określonymi komponentami.
- Powodem, dla którego zmieniam projekt mojej biblioteki, jest to, że myślę, że można ją bardzo zmienić, w tej chwili nie lubię tego stylu.