载入中...
搜索中...
未找到
GeneratorRegistry.h
浏览该文件的文档.
1#pragma once
2
3#include "procgen/Grid2D.h"
4#include "procgen/Params.h"
5
6#include <functional>
7#include <string>
8#include <unordered_map>
9#include <vector>
10
11namespace eve::procgen {
12
13using GeneratorFn = std::function<bool(const Params &params, Grid2D &out, std::string &error)>;
14
16public:
18
19 void registerAlgorithm(const std::string &id, GeneratorFn fn);
20 bool has(const std::string &id) const;
21 bool generate(const std::string &id, const Params &params, Grid2D &out, std::string &error) const;
22 std::vector<std::string> list() const;
23
25 void registerBuiltins();
26
27private:
28 GeneratorRegistry() = default;
29 std::unordered_map<std::string, GeneratorFn> algorithms_;
30 bool builtinsRegistered_ = false;
31};
32
33} // namespace eve::procgen
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)
void registerBuiltins()
Register built-in DTL / custom map algorithms (idempotent).
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