载入中...
搜索中...
未找到
GeneratorRegistry.cpp
浏览该文件的文档.
2
3#include <algorithm>
4
5namespace eve::procgen {
6
11
13 algorithms_[id] = std::move(fn);
14}
15
16bool GeneratorRegistry::has(const std::string &id) const {
17 return algorithms_.find(id) != algorithms_.end();
18}
19
20bool GeneratorRegistry::generate(const std::string &id, const Params &params, Grid2D &out,
21 std::string &error) const {
22 auto it = algorithms_.find(id);
23 if (it == algorithms_.end()) {
24 error = "unknown algorithm: " + id;
25 return false;
26 }
27 return it->second(params, out, error);
28}
29
30std::vector<std::string> GeneratorRegistry::list() const {
31 std::vector<std::string> ids;
32 ids.reserve(algorithms_.size());
33 for (const auto &kv : algorithms_) ids.push_back(kv.first);
34 std::sort(ids.begin(), ids.end());
35 return ids;
36}
37
38} // namespace eve::procgen
std::string id
std::string error
SettlementPipeline::Stage fn
bool generate(const std::string &id, const Params &params, Grid2D &out, std::string &error) const
void registerAlgorithm(const std::string &id, GeneratorFn fn)
bool has(const std::string &id) const
static GeneratorRegistry & instance()
std::vector< std::string > list() const
Intermediate 2D generation result. cells store semantic ids (see Semantic.h), not tile GIDs — convert...
Definition Grid2D.h:16
Generation parameters. Algorithm-specific keys live in values as strings (no overloads; typed setters...
Definition Params.h:13
std::function< bool(const Params &params, Grid2D &out, std::string &error)> GeneratorFn