载入中...
搜索中...
未找到
GeneratorRegistry.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5#include "procgen/Grid2D.h"
7#include "procgen/Params.h"
8
9#include <functional>
10#include <string>
11#include <unordered_map>
12#include <utility>
13#include <vector>
14
15namespace eve::procgen {
16
17using GeneratorFn = std::function<bool(const Params &params, Grid2D &out, std::string &error)>;
18
21
24public:
26 static GeneratorRegistry &instance();
27
32 void registerAlgorithm(const std::string &id, GeneratorFn fn);
37 void registerAlgorithm(GeneratorDescriptor descriptor, GeneratorFn fn);
40 bool has(const std::string &id) const;
46 bool generate(const std::string &id, const Params &params, Grid2D &out, std::string &error) const;
48 std::vector<std::string> list() const;
53 const GeneratorDescriptor *descriptor(const std::string &id) const;
58 bool applyDefaults(const std::string &id, Params &params) const;
59
61 void registerBuiltins();
62
63private:
64 struct Entry {
65 GeneratorFn generate;
67 };
68 GeneratorRegistry() = default;
69 std::unordered_map<std::string, Entry> algorithms_;
70 bool builtinsRegistered_ = false;
71};
72
73} // namespace eve::procgen
std::string descriptor
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::string error
Definition Package.cpp:60
Registry for executable generators and their reflection metadata.
Intermediate 2D generation result. cells store semantic ids (see Semantic.h), not tile GIDs — convert...
Definition Grid2D.h:36
Owning, typed generation parameters.
Definition Params.h:27
std::vector< ParamSpec > params
std::function< bool(const Params &params, Grid2D &out, std::string &error)> GeneratorFn
SettlementPipeline::Stage fn
Complete metadata and parameter schema shared by every procgen recipe family.
Definition ParamSchema.h:52