9#include "yaml-cpp/yaml.h"
15#define YAML_FILE_PROVIDER_CPP_COMPILING
17#undef YAML_FILE_PROVIDER_CPP_COMPILING
28 gsl::not_null<TextFormatter *> format,
29 const std::filesystem::path &project_root,
31 : format_{format}, project_root_{project_root}, tileset_key_provider_{&tileset_key_provider}
38 : owned_format_{std::make_unique<
PlainTextFormatter>()}, format_{owned_format_.get()}, project_root_{project_root},
39 tileset_key_provider_{&tileset_key_provider}
46 return "YamlFileProvider";
51 const auto paths = get_tileset_config_path_chain(project_root_, tileset_key_provider_, tileset);
52 return search_config_files<std::size_t>(
56 [](
const YAML::Node &doc) {
return doc[
"fieldmap"][
"num_tiles_primary"]; },
63 const auto paths = get_tileset_config_path_chain(project_root_, tileset_key_provider_, tileset);
64 return search_config_files<std::size_t>(
68 [](
const YAML::Node &doc) {
return doc[
"fieldmap"][
"num_tiles_total"]; },
75 const auto paths = get_tileset_config_path_chain(project_root_, tileset_key_provider_, tileset);
76 return search_config_files<std::size_t>(
80 [](
const YAML::Node &doc) {
return doc[
"fieldmap"][
"num_metatiles_primary"]; },
82 "num_metatiles_primary");
87 const auto paths = get_tileset_config_path_chain(project_root_, tileset_key_provider_, tileset);
88 return search_config_files<std::size_t>(
92 [](
const YAML::Node &doc) {
return doc[
"fieldmap"][
"num_metatiles_total"]; },
94 "num_metatiles_total");
99 const auto paths = get_tileset_config_path_chain(project_root_, tileset_key_provider_, tileset);
100 return search_config_files<std::size_t>(
104 [](
const YAML::Node &doc) {
return doc[
"fieldmap"][
"num_pals_primary"]; },
111 const auto paths = get_tileset_config_path_chain(project_root_, tileset_key_provider_, tileset);
112 return search_config_files<std::size_t>(
116 [](
const YAML::Node &doc) {
return doc[
"fieldmap"][
"num_pals_total"]; },
123 const auto paths = get_tileset_config_path_chain(project_root_, tileset_key_provider_, tileset);
124 return search_config_files<std::size_t>(
128 [](
const YAML::Node &doc) {
return doc[
"fieldmap"][
"max_map_data_size"]; },
130 "max_map_data_size");
135 const auto paths = get_tileset_config_path_chain(project_root_, tileset_key_provider_, tileset);
136 return search_config_files<std::size_t>(
140 [](
const YAML::Node &doc) {
return doc[
"fieldmap"][
"num_tiles_per_metatile"]; },
142 "num_tiles_per_metatile");
147 const auto paths = get_tileset_config_path_chain(project_root_, tileset_key_provider_, tileset);
148 return search_config_files<Rgba32>(
152 [](
const YAML::Node &doc) {
return doc[
"extrinsic_transparency"]; },
154 "extrinsic_transparency");
159 const auto paths = get_tileset_config_path_chain(project_root_, tileset_key_provider_, tileset);
160 return search_config_files<bool>(
164 [](
const YAML::Node &doc) {
return doc[
"patch"][
"enabled"]; },
166 "patch_build_enabled");
171 const auto paths = get_tileset_config_path_chain(project_root_, tileset_key_provider_, tileset);
172 return search_config_files<TilesPalMode>(
176 [](
const YAML::Node &doc) {
return doc[
"tiles_pal_mode"]; },
177 parse_tiles_pal_mode,
TextFormatter implementation that strips all styling from text.
Abstract interface for generating keys and discovering tileset artifacts in a backing store.
LayerValue< std::size_t > num_metatiles_primary(const std::string &tileset) const override
LayerValue< std::size_t > num_metatiles_total(const std::string &tileset) const override
LayerValue< std::size_t > max_map_data_size(const std::string &tileset) const override
LayerValue< std::size_t > num_tiles_total(const std::string &tileset) const override
YamlFileProvider(gsl::not_null< TextFormatter * > format, const std::filesystem::path &project_root, const TilesetArtifactKeyProvider &tileset_key_provider)
Constructs a YamlFileProvider that searches for configuration across multiple YAML files.
LayerValue< TilesPalMode > tiles_pal_mode(const std::string &tileset) const override
LayerValue< bool > patch_build_enabled(const std::string &tileset) const override
LayerValue< std::size_t > num_tiles_primary(const std::string &tileset) const override
LayerValue< std::size_t > num_pals_total(const std::string &tileset) const override
std::string name() const override
Gets the name of this config layer.
LayerValue< std::size_t > num_pals_primary(const std::string &tileset) const override
LayerValue< std::size_t > num_tiles_per_metatile(const std::string &tileset) const override
LayerValue< Rgba32 > extrinsic_transparency(const std::string &tileset) const override
A small container that holds an optional-wrapped value, validation state, and metadata about the valu...