Я создаю игровой движок и пытаюсь реорганизовать несколько вещей;а именно EngineManager
, который управляет основными компонентами движка (аудио, видео, ввод / вывод клавиатуры / мыши и т. д.).
Основная идея реализации этой очистки , если хотите, состоит в том, чтобы использовать EngineManager
в качестве клиента, который будет отправлять данные через обработку событий (в SDL) этим различнымкомпоненты, которые в свою очередь будут отправлять сообщения обратно.Чтобы избежать безумия, у меня есть следующая реализация:
Конфиг
class Config
{
public:
Config( const EngineManager* engine, const Controls* controls );
~Config( void );
//More functions
private:
Controls** mControls;
EngineManager** mEngine;
//More functions/class members
};
Config::Config( const EngineManager* engine, const Controls* controls )
: mControls( controls ),
mEngine( engine ),
mIsInitialized( false )
{
}
Config::~Config( void )
{
delete mControls;
delete mEngine;
}
EngineManager
class EngineManager
{
public:
EngineManager( void );
~EngineManager( void );
//More functions/class members
private:
Controls* mControls;
Config* mConfig;
//More functions/class members
};
EngineManager::EngineManager( void )
: mControls( new Controls( this ) ),
mConfig( new Config( this, mControls ) ),
mEvent( new SDL_Event )
{
Init();
}
EngineManager::~EngineManager( void )
{
delete mEvent;
delete mConfig;
delete mControls;
delete mScreen;
}
I 'd публиковать элементы управления, но в основном это делает то же самое, что и класс config - хотя и без ссылки на config.
Тем не менее, что-то подсказывает мне, что хорошей реализацией МОЖЕТ быть указатель на функцию какого-то рода ...
Есть идеи?