Моя игровая база состоит из серии модулей, организованных в виде классов, которые создаются, обновляются и взаимодействуют по мере необходимости.
Вот несколько примеров: CWindowManager
, CGraphicsManager
, CPhysicsManager
и т. д.
Мне стыдно сказать, что в настоящее время я использую для них глобальные указатели (extern CWindowManager* g_WindowManager;
), и я знаю, что это, вероятно, плохая вещь.
В любом случае, дело в том, что эти модули нужно создавать и удалять динамически, и, конечно, в правильном порядке.Также проблема в том, что такие модули, как CPhysicsManager
, зависят от сцены, поэтому они удаляются при переключении сцены, а затем снова создаются.
Теперь я бы хотел отказаться от использования глобальных переменных.для работы с модулями в моей игре.
Я не боюсь рефакторинга, но я не могу думать о том, что было бы лучшей альтернативой глобалам.
IЯ думал о создании класса CModuleManager и сохранении экземпляров модулей в нем как членов, которые затем являются производными от базового класса CModule.Хотя я не могу придумать, как это будет работать в деталях.
Кажется, это общая проблема в разработке программного обеспечения и особенно в разработке игр, поэтому:
- Что такоелучший вариант для управления модулями, по сравнению с простым использованием глобальных указателей?