Наразі я переробляю систему Entity для C ++, і у мене є багато менеджерів. У своєму дизайні я маю ці класи, щоб зв'язати свою бібліотеку разом. Я чув багато поганого, коли мова йде про "менеджерські" класи, можливо, я не називаю свої класи належним чином. Однак я не маю уявлення, як ще їх назвати.
Більшість менеджерів у моїй бібліотеці складаються з цих класів (хоча це дещо відрізняється):
- Контейнер - контейнер для об'єктів у менеджері
- Атрибути - атрибути для об'єктів у менеджері
У своєму новому дизайні для моєї бібліотеки я маю ці конкретні класи, щоб зв'язати свою бібліотеку разом.
ComponentManager - керує компонентами в системі Entity
- ComponentContainer
- ComponentAttributes
- Сцена * - посилання на сцену (див. Нижче)
SystemManager - керує системами в Entity System
- SystemContainer
- Сцена * - посилання на сцену (див. Нижче)
EntityManager - керує об'єктами в Entity System
- EntityPool - пул сутностей
- EntityAttributes - атрибути об'єкта (це буде доступно лише для класів ComponentContainer та System)
- Сцена * - посилання на сцену (див. Нижче)
Сцена - зв’язує всіх менеджерів разом
- ComponentManager
- SystemManager
- EntityManager
Я думав просто поставити всі контейнери / басейни у сам клас Scene.
тобто
Замість цього:
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();
Це було б так:
Scene scene; // create a Scene
Entity entity = scene.getEntityPool().create();
Але, я не впевнений. Якби я робив останнє, це означало б, що я мав би багато об'єктів і методів, оголошених всередині мого класу Scene.
ПРИМІТКИ:
- Система сутності - це просто дизайн, який використовується для ігор. Він складається з 3 основних частин: компоненти, сутності та системи. Компоненти - це просто дані, які можуть бути "додані" до об'єктів, щоб сутності були відмінними. Суб'єкт представлений цілим числом. Системи містять логіку для сутності, із конкретними компонентами.
- Причина, що я змінюю дизайн своєї бібліотеки, полягає в тому, що я думаю, що це можна змінити досить сильно, на даний момент мені не подобається відчуття / потік до нього.