Files
UwU-Engine/Core/Game/ObjectFactory.hpp
T

29 lines
711 B
C++

#pragma once
#include <vector>
class ISave;
struct ObjectFactory
{
const char* name;
ISave*(*factory)();
};
// Создаёт список фабрик объектов
#define FACTORIES_LIST std::vector<ObjectFactory> factories =
// Создаёт фабрику для класса
#define GENERATE_FACTORY_OBJECT(Class) ObjectFactory{#Class, []()->ISave* { return new Class(); }},
/*
* Все классы или их родители в этом списке
* должны реализовывать инетфейс ISave.
* Пример использования:
FACTORIES_LIST {
GENERATE_FACTORY_OBJECT(SometimeClass_One)
GENERATE_FACTORY_OBJECT(SometimeClass_Two)
};
*/