Porytiles
Loading...
Searching...
No Matches
domain_config.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4
12
13namespace porytiles2 {
14
15/*
16 * NOTE: DO NOT EDIT THIS FILE DIRECTLY. It is AUTO-GENERATED from config_schema.yaml.
17 * To add new config values or make other changes, edit config_schema.yaml and regenerate using
18 * Scripts/generate_config.py.
19 */
20
29 public:
30 virtual ~DomainConfig() = default;
31
32 // Public method with validation
34 num_tiles_primary(const std::string &tileset) const
35 {
36 auto raw_val = num_tiles_primary_raw(tileset);
37 // Apply validators in sequence
38 if (raw_val.has_value()) {
39 raw_val = size_t_val_greater_than_zero(raw_val.value());
40 }
41 return raw_val;
42 }
43
44 // Public method with validation
46 num_tiles_total(const std::string &tileset) const
47 {
48 auto raw_val = num_tiles_total_raw(tileset);
49 // Apply validators in sequence
50 if (raw_val.has_value()) {
51 raw_val = size_t_val_greater_than_zero(raw_val.value());
52 }
53 // Apply cross-field validators
54 if (raw_val.has_value()) {
55 raw_val = compare_greater_equal<std::size_t>(
56 raw_val.value(), *this, tileset, "num_tiles_primary",
57 [](const DomainConfig &cfg, const std::string &ts) { return cfg.num_tiles_primary(ts); }
58 );
59 }
60 return raw_val;
61 }
62
63 // Public method with validation
65 num_metatiles_primary(const std::string &tileset) const
66 {
67 auto raw_val = num_metatiles_primary_raw(tileset);
68 // Apply validators in sequence
69 if (raw_val.has_value()) {
70 raw_val = size_t_val_greater_than_zero(raw_val.value());
71 }
72 return raw_val;
73 }
74
75 // Public method with validation
77 num_metatiles_total(const std::string &tileset) const
78 {
79 auto raw_val = num_metatiles_total_raw(tileset);
80 // Apply validators in sequence
81 if (raw_val.has_value()) {
82 raw_val = size_t_val_greater_than_zero(raw_val.value());
83 }
84 // Apply cross-field validators
85 if (raw_val.has_value()) {
86 raw_val = compare_greater_equal<std::size_t>(
87 raw_val.value(), *this, tileset, "num_metatiles_primary",
88 [](const DomainConfig &cfg, const std::string &ts) { return cfg.num_metatiles_primary(ts); }
89 );
90 }
91 return raw_val;
92 }
93
94 // Public method with validation
96 num_pals_primary(const std::string &tileset) const
97 {
98 auto raw_val = num_pals_primary_raw(tileset);
99 // Apply validators in sequence
100 if (raw_val.has_value()) {
101 raw_val = size_t_val_greater_than_zero(raw_val.value());
102 }
103 return raw_val;
104 }
105
106 // Public method with validation
108 num_pals_total(const std::string &tileset) const
109 {
110 auto raw_val = num_pals_total_raw(tileset);
111 // Apply validators in sequence
112 if (raw_val.has_value()) {
113 raw_val = size_t_val_greater_than_zero(raw_val.value());
114 }
115 // Apply cross-field validators
116 if (raw_val.has_value()) {
117 raw_val = compare_greater_equal<std::size_t>(
118 raw_val.value(), *this, tileset, "num_pals_primary",
119 [](const DomainConfig &cfg, const std::string &ts) { return cfg.num_pals_primary(ts); }
120 );
121 }
122 return raw_val;
123 }
124
125 // Public method with validation
127 max_map_data_size(const std::string &tileset) const
128 {
129 auto raw_val = max_map_data_size_raw(tileset);
130 // Apply validators in sequence
131 if (raw_val.has_value()) {
132 raw_val = size_t_val_greater_than_zero(raw_val.value());
133 }
134 return raw_val;
135 }
136
137 // Public method with validation
139 num_tiles_per_metatile(const std::string &tileset) const
140 {
141 auto raw_val = num_tiles_per_metatile_raw(tileset);
142 return raw_val;
143 }
144
145 // Public method with validation
147 extrinsic_transparency(const std::string &tileset) const
148 {
149 auto raw_val = extrinsic_transparency_raw(tileset);
150 return raw_val;
151 }
152
153 // Public method with validation
155 patch_build_enabled(const std::string &tileset) const
156 {
157 auto raw_val = patch_build_enabled_raw(tileset);
158 return raw_val;
159 }
160
161 protected:
162 // Protected virtual method that fetches raw value from provider
163 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
164 num_tiles_primary_raw(const std::string &tileset) const = 0;
165
166 // Protected virtual method that fetches raw value from provider
167 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
168 num_tiles_total_raw(const std::string &tileset) const = 0;
169
170 // Protected virtual method that fetches raw value from provider
171 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
172 num_metatiles_primary_raw(const std::string &tileset) const = 0;
173
174 // Protected virtual method that fetches raw value from provider
175 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
176 num_metatiles_total_raw(const std::string &tileset) const = 0;
177
178 // Protected virtual method that fetches raw value from provider
179 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
180 num_pals_primary_raw(const std::string &tileset) const = 0;
181
182 // Protected virtual method that fetches raw value from provider
183 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
184 num_pals_total_raw(const std::string &tileset) const = 0;
185
186 // Protected virtual method that fetches raw value from provider
187 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
188 max_map_data_size_raw(const std::string &tileset) const = 0;
189
190 // Protected virtual method that fetches raw value from provider
191 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
192 num_tiles_per_metatile_raw(const std::string &tileset) const = 0;
193
194 // Protected virtual method that fetches raw value from provider
195 [[nodiscard]] virtual ChainableResult<ConfigValue<Rgba32>>
196 extrinsic_transparency_raw(const std::string &tileset) const = 0;
197
198 // Protected virtual method that fetches raw value from provider
199 [[nodiscard]] virtual ChainableResult<ConfigValue<bool>>
200 patch_build_enabled_raw(const std::string &tileset) const = 0;
201
202};
203
204} // namespace porytiles2
A result type that maintains a chainable sequence of errors for debugging and error reporting.
Interface that defines a complete domain layer configuration.
ChainableResult< ConfigValue< std::size_t > > num_pals_primary(const std::string &tileset) const
ChainableResult< ConfigValue< std::size_t > > max_map_data_size(const std::string &tileset) const
ChainableResult< ConfigValue< std::size_t > > num_pals_total(const std::string &tileset) const
virtual ChainableResult< ConfigValue< std::size_t > > num_metatiles_total_raw(const std::string &tileset) const =0
ChainableResult< ConfigValue< Rgba32 > > extrinsic_transparency(const std::string &tileset) const
virtual ~DomainConfig()=default
virtual ChainableResult< ConfigValue< std::size_t > > num_pals_primary_raw(const std::string &tileset) const =0
virtual ChainableResult< ConfigValue< std::size_t > > num_metatiles_primary_raw(const std::string &tileset) const =0
virtual ChainableResult< ConfigValue< bool > > patch_build_enabled_raw(const std::string &tileset) const =0
ChainableResult< ConfigValue< std::size_t > > num_tiles_per_metatile(const std::string &tileset) const
ChainableResult< ConfigValue< std::size_t > > num_metatiles_total(const std::string &tileset) const
virtual ChainableResult< ConfigValue< std::size_t > > num_tiles_total_raw(const std::string &tileset) const =0
virtual ChainableResult< ConfigValue< std::size_t > > num_tiles_primary_raw(const std::string &tileset) const =0
ChainableResult< ConfigValue< std::size_t > > num_tiles_primary(const std::string &tileset) const
ChainableResult< ConfigValue< std::size_t > > num_tiles_total(const std::string &tileset) const
virtual ChainableResult< ConfigValue< Rgba32 > > extrinsic_transparency_raw(const std::string &tileset) const =0
ChainableResult< ConfigValue< std::size_t > > num_metatiles_primary(const std::string &tileset) const
virtual ChainableResult< ConfigValue< std::size_t > > num_pals_total_raw(const std::string &tileset) const =0
virtual ChainableResult< ConfigValue< std::size_t > > num_tiles_per_metatile_raw(const std::string &tileset) const =0
ChainableResult< ConfigValue< bool > > patch_build_enabled(const std::string &tileset) const
virtual ChainableResult< ConfigValue< std::size_t > > max_map_data_size_raw(const std::string &tileset) const =0
ChainableResult< ConfigValue< std::size_t > > size_t_val_greater_than_zero(const ConfigValue< std::size_t > &val)
Validates that a size_t config value is greater than zero.