#ifndef WORLD_WORLDGENERATORS_H_ #define WORLD_WORLDGENERATORS_H_ #include "../voxels/WorldGenerator.h" #include "../content/Content.h" #include #include #include typedef WorldGenerator* (*gen_constructor) (const Content*); class WorldGenerators { static inline std::map generators = *(new std::map); public: template static void addGenerator(std::string id); static std::vector getGeneratorsIDs(); static std::string getDefaultGeneratorID(); static WorldGenerator* createGenerator(std::string id, const Content* content); }; template void WorldGenerators::addGenerator(std::string id) { generators[id] = [] (const Content* content) { return (WorldGenerator*) new T(content); }; } #endif /* WORLD_WORLDGENERATORS_H_ */