28 lines
797 B
C++
28 lines
797 B
C++
#pragma once
|
|
|
|
#include <vector>
|
|
|
|
class GameInstance;
|
|
class World;
|
|
|
|
struct WorldFactory
|
|
{
|
|
const char* world_name;
|
|
World*(*factory)(GameInstance&);
|
|
};
|
|
|
|
// Создаёт ассоцеативный список
|
|
// В нём соспоставляются имина уровней и фабрики их классов
|
|
#define WORLDS_LIST std::vector<WorldFactory> world_factories =
|
|
|
|
// Генерирует элемент списка
|
|
#define GENERATE_WORLD_FACTORY(Class, WorldName) WorldFactory{#WorldName, [](GameInstance& game_insance)->World* { return new Class(game_insance); }},
|
|
|
|
/*
|
|
* Пример использования:
|
|
|
|
WORLDS_LIST {
|
|
GENERATE_WORLD_FACTORY(Sometime_class_world_One, WorldName_One)
|
|
GENERATE_WORLD_FACTORY(Sometime_class_world_Two, WorldName_Two)
|
|
};
|
|
*/ |