Porytiles
Loading...
Searching...
No Matches
domain_config.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <string>
5
22
23namespace porytiles {
24
25/*
26 * NOTE: DO NOT EDIT THIS FILE DIRECTLY. It is AUTO-GENERATED from config_schema.yaml.
27 * To add new config values or make other changes, edit config_schema.yaml and regenerate via:
28 *
29 * uv run scripts/generate_config.py
30 */
31
32class ConfigProvider; // forward declaration to avoid domain -> infra dependency
33
38 public:
39 virtual ~DomainConfig() = default;
40
51 virtual void add_provider(std::unique_ptr<ConfigProvider> provider) = 0;
52
53 // Public method with cross-field validation only (Tier 3)
55 num_tiles_in_primary(ConfigScopeType type, const std::string &scope) const
56 {
57 auto validated_val = num_tiles_in_primary_validated(type, scope);
58 // Apply cross-field validators
59 if (validated_val.has_value()) {
60 validated_val = compare_less_equal<std::size_t>(
61 validated_val.value(), *this, type, scope, "num_tiles_total",
62 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) { return cfg.num_tiles_total_validated(t, s); }
63 );
64 }
65 return validated_val;
66 }
67
68 // Public method with cross-field validation only (Tier 3)
70 num_tiles_total(ConfigScopeType type, const std::string &scope) const
71 {
72 auto validated_val = num_tiles_total_validated(type, scope);
73 // Apply cross-field validators
74 if (validated_val.has_value()) {
75 validated_val = compare_greater_equal<std::size_t>(
76 validated_val.value(), *this, type, scope, "num_tiles_in_primary",
77 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) { return cfg.num_tiles_in_primary_validated(t, s); }
78 );
79 }
80 return validated_val;
81 }
82
83 // Public method with cross-field validation only (Tier 3)
85 num_metatiles_in_primary(ConfigScopeType type, const std::string &scope) const
86 {
87 auto validated_val = num_metatiles_in_primary_validated(type, scope);
88 // Apply cross-field validators
89 if (validated_val.has_value()) {
90 validated_val = compare_less_equal<std::size_t>(
91 validated_val.value(), *this, type, scope, "num_metatiles_total",
92 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) { return cfg.num_metatiles_total_validated(t, s); }
93 );
94 }
95 return validated_val;
96 }
97
98 // Public method with cross-field validation only (Tier 3)
100 num_metatiles_total(ConfigScopeType type, const std::string &scope) const
101 {
102 auto validated_val = num_metatiles_total_validated(type, scope);
103 // Apply cross-field validators
104 if (validated_val.has_value()) {
105 validated_val = compare_greater_equal<std::size_t>(
106 validated_val.value(), *this, type, scope, "num_metatiles_in_primary",
107 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) { return cfg.num_metatiles_in_primary_validated(t, s); }
108 );
109 }
110 return validated_val;
111 }
112
113 // Public method with cross-field validation only (Tier 3)
115 num_pals_in_primary(ConfigScopeType type, const std::string &scope) const
116 {
117 auto validated_val = num_pals_in_primary_validated(type, scope);
118 // Apply cross-field validators
119 if (validated_val.has_value()) {
120 validated_val = compare_less_equal<std::size_t>(
121 validated_val.value(), *this, type, scope, "num_pals_total",
122 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) { return cfg.num_pals_total_validated(t, s); }
123 );
124 }
125 return validated_val;
126 }
127
128 // Public method with cross-field validation only (Tier 3)
130 num_pals_total(ConfigScopeType type, const std::string &scope) const
131 {
132 auto validated_val = num_pals_total_validated(type, scope);
133 // Apply cross-field validators
134 if (validated_val.has_value()) {
135 validated_val = compare_greater_equal<std::size_t>(
136 validated_val.value(), *this, type, scope, "num_pals_in_primary",
137 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) { return cfg.num_pals_in_primary_validated(t, s); }
138 );
139 }
140 return validated_val;
141 }
142
143 // Public method with cross-field validation only (Tier 3)
145 max_map_data_size(ConfigScopeType type, const std::string &scope) const
146 {
147 auto validated_val = max_map_data_size_validated(type, scope);
148 return validated_val;
149 }
150
151 // Public method with cross-field validation only (Tier 3)
153 num_tiles_per_metatile(ConfigScopeType type, const std::string &scope) const
154 {
155 auto validated_val = num_tiles_per_metatile_validated(type, scope);
156 return validated_val;
157 }
158
159 // Public method with cross-field validation only (Tier 3)
161 extrinsic_transparency(ConfigScopeType type, const std::string &scope) const
162 {
163 auto validated_val = extrinsic_transparency_validated(type, scope);
164 return validated_val;
165 }
166
167 // Public method with cross-field validation only (Tier 3)
169 tiles_edit_mode(ConfigScopeType type, const std::string &scope) const
170 {
171 auto validated_val = tiles_edit_mode_validated(type, scope);
172 return validated_val;
173 }
174
175 // Public method with cross-field validation only (Tier 3)
177 pals_edit_mode(ConfigScopeType type, const std::string &scope) const
178 {
179 auto validated_val = pals_edit_mode_validated(type, scope);
180 return validated_val;
181 }
182
183 // Public method with cross-field validation only (Tier 3)
185 pal_hints_enabled(ConfigScopeType type, const std::string &scope) const
186 {
187 auto validated_val = pal_hints_enabled_validated(type, scope);
188 return validated_val;
189 }
190
191 // Public method with cross-field validation only (Tier 3)
193 pal_hints(ConfigScopeType type, const std::string &scope) const
194 {
195 auto validated_val = pal_hints_validated(type, scope);
196 return validated_val;
197 }
198
199 // Public method with cross-field validation only (Tier 3)
201 packing_strategy(ConfigScopeType type, const std::string &scope) const
202 {
203 auto validated_val = packing_strategy_validated(type, scope);
204 return validated_val;
205 }
206
207 // Public method with cross-field validation only (Tier 3)
209 packing_strategy_params(ConfigScopeType type, const std::string &scope) const
210 {
211 auto validated_val = packing_strategy_params_validated(type, scope);
212 return validated_val;
213 }
214
215 // Public method with cross-field validation only (Tier 3)
217 tile_sharing_packing(ConfigScopeType type, const std::string &scope) const
218 {
219 auto validated_val = tile_sharing_packing_validated(type, scope);
220 // Apply cross-field validators
221 if (validated_val.has_value()) {
222 validated_val = require_packing_strategy_backtracking<TileSharingPacking>(
223 validated_val.value(), *this, type, scope, "packing_strategy",
224 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) { return cfg.packing_strategy_validated(t, s); }
225 );
226 }
227 return validated_val;
228 }
229
230 // Public method with cross-field validation only (Tier 3)
232 tile_sharing_alignment(ConfigScopeType type, const std::string &scope) const
233 {
234 auto validated_val = tile_sharing_alignment_validated(type, scope);
235 return validated_val;
236 }
237
238 // Public method with cross-field validation only (Tier 3)
240 tiles_pal_mode(ConfigScopeType type, const std::string &scope) const
241 {
242 auto validated_val = tiles_pal_mode_validated(type, scope);
243 return validated_val;
244 }
245
246 // Public method with cross-field validation only (Tier 3)
248 global_anim_pal_resolution_strategy(ConfigScopeType type, const std::string &scope) const
249 {
250 auto validated_val = global_anim_pal_resolution_strategy_validated(type, scope);
251 return validated_val;
252 }
253
254 // Public method with cross-field validation only (Tier 3)
256 global_anim_key_frame_resolution_strategy(ConfigScopeType type, const std::string &scope) const
257 {
258 auto validated_val = global_anim_key_frame_resolution_strategy_validated(type, scope);
259 return validated_val;
260 }
261
262 // Public method with cross-field validation only (Tier 3)
265 {
266 auto validated_val = global_anim_multi_pal_subtile_resolution_strategy_validated(type, scope);
267 return validated_val;
268 }
269
270 // Public method with cross-field validation only (Tier 3)
272 global_frame_linking(ConfigScopeType type, const std::string &scope) const
273 {
274 auto validated_val = global_frame_linking_validated(type, scope);
275 return validated_val;
276 }
277
278 // Public method with cross-field validation only (Tier 3)
280 per_anim_overrides(ConfigScopeType type, const std::string &scope) const
281 {
282 auto validated_val = per_anim_overrides_validated(type, scope);
283 return validated_val;
284 }
285
286 // Public method with cross-field validation only (Tier 3)
288 cross_tileset_anim_linking(ConfigScopeType type, const std::string &scope) const
289 {
290 auto validated_val = cross_tileset_anim_linking_validated(type, scope);
291 return validated_val;
292 }
293
294
295 protected:
296
297 // Protected method with single-value validation only (Tier 2)
298 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
299 num_tiles_in_primary_validated(ConfigScopeType type, const std::string &scope) const
300 {
301 auto raw_val = num_tiles_in_primary_raw(type, scope);
302 // Apply validators in sequence
303 if (raw_val.has_value()) {
304 raw_val = size_t_val_greater_than_zero(raw_val.value());
305 }
306 return raw_val;
307 }
308
309 // Protected virtual method that fetches raw value from provider (Tier 1)
310 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
311 num_tiles_in_primary_raw(ConfigScopeType type, const std::string &scope) const = 0;
312
313 // Protected method with single-value validation only (Tier 2)
314 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
315 num_tiles_total_validated(ConfigScopeType type, const std::string &scope) const
316 {
317 auto raw_val = num_tiles_total_raw(type, scope);
318 // Apply validators in sequence
319 if (raw_val.has_value()) {
320 raw_val = size_t_val_greater_than_zero(raw_val.value());
321 }
322 return raw_val;
323 }
324
325 // Protected virtual method that fetches raw value from provider (Tier 1)
326 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
327 num_tiles_total_raw(ConfigScopeType type, const std::string &scope) const = 0;
328
329 // Protected method with single-value validation only (Tier 2)
330 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
331 num_metatiles_in_primary_validated(ConfigScopeType type, const std::string &scope) const
332 {
333 auto raw_val = num_metatiles_in_primary_raw(type, scope);
334 // Apply validators in sequence
335 if (raw_val.has_value()) {
336 raw_val = size_t_val_greater_than_zero(raw_val.value());
337 }
338 return raw_val;
339 }
340
341 // Protected virtual method that fetches raw value from provider (Tier 1)
342 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
343 num_metatiles_in_primary_raw(ConfigScopeType type, const std::string &scope) const = 0;
344
345 // Protected method with single-value validation only (Tier 2)
346 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
347 num_metatiles_total_validated(ConfigScopeType type, const std::string &scope) const
348 {
349 auto raw_val = num_metatiles_total_raw(type, scope);
350 // Apply validators in sequence
351 if (raw_val.has_value()) {
352 raw_val = size_t_val_greater_than_zero(raw_val.value());
353 }
354 return raw_val;
355 }
356
357 // Protected virtual method that fetches raw value from provider (Tier 1)
358 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
359 num_metatiles_total_raw(ConfigScopeType type, const std::string &scope) const = 0;
360
361 // Protected method with single-value validation only (Tier 2)
362 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
363 num_pals_in_primary_validated(ConfigScopeType type, const std::string &scope) const
364 {
365 auto raw_val = num_pals_in_primary_raw(type, scope);
366 // Apply validators in sequence
367 if (raw_val.has_value()) {
368 raw_val = size_t_val_greater_than_zero(raw_val.value());
369 }
370 return raw_val;
371 }
372
373 // Protected virtual method that fetches raw value from provider (Tier 1)
374 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
375 num_pals_in_primary_raw(ConfigScopeType type, const std::string &scope) const = 0;
376
377 // Protected method with single-value validation only (Tier 2)
378 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
379 num_pals_total_validated(ConfigScopeType type, const std::string &scope) const
380 {
381 auto raw_val = num_pals_total_raw(type, scope);
382 // Apply validators in sequence
383 if (raw_val.has_value()) {
384 raw_val = size_t_val_greater_than_zero(raw_val.value());
385 }
386 return raw_val;
387 }
388
389 // Protected virtual method that fetches raw value from provider (Tier 1)
390 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
391 num_pals_total_raw(ConfigScopeType type, const std::string &scope) const = 0;
392
393 // Protected method with single-value validation only (Tier 2)
394 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
395 max_map_data_size_validated(ConfigScopeType type, const std::string &scope) const
396 {
397 auto raw_val = max_map_data_size_raw(type, scope);
398 // Apply validators in sequence
399 if (raw_val.has_value()) {
400 raw_val = size_t_val_greater_than_zero(raw_val.value());
401 }
402 return raw_val;
403 }
404
405 // Protected virtual method that fetches raw value from provider (Tier 1)
406 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
407 max_map_data_size_raw(ConfigScopeType type, const std::string &scope) const = 0;
408
409 // Protected method with single-value validation only (Tier 2)
410 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
411 num_tiles_per_metatile_validated(ConfigScopeType type, const std::string &scope) const
412 {
413 auto raw_val = num_tiles_per_metatile_raw(type, scope);
414 // Apply validators in sequence
415 if (raw_val.has_value()) {
416 raw_val = size_t_val_eight_or_twelve(raw_val.value());
417 }
418 return raw_val;
419 }
420
421 // Protected virtual method that fetches raw value from provider (Tier 1)
422 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
423 num_tiles_per_metatile_raw(ConfigScopeType type, const std::string &scope) const = 0;
424
425 // Protected method with single-value validation only (Tier 2)
426 [[nodiscard]] virtual ChainableResult<ConfigValue<Rgba32>>
427 extrinsic_transparency_validated(ConfigScopeType type, const std::string &scope) const
428 {
429 auto raw_val = extrinsic_transparency_raw(type, scope);
430 // Apply validators in sequence
431 if (raw_val.has_value()) {
432 raw_val = rgba_alpha_component_opaque(raw_val.value());
433 }
434 return raw_val;
435 }
436
437 // Protected virtual method that fetches raw value from provider (Tier 1)
438 [[nodiscard]] virtual ChainableResult<ConfigValue<Rgba32>>
439 extrinsic_transparency_raw(ConfigScopeType type, const std::string &scope) const = 0;
440
441 // Protected method with single-value validation only (Tier 2)
443 tiles_edit_mode_validated(ConfigScopeType type, const std::string &scope) const
444 {
445 auto raw_val = tiles_edit_mode_raw(type, scope);
446 return raw_val;
447 }
448
449 // Protected virtual method that fetches raw value from provider (Tier 1)
451 tiles_edit_mode_raw(ConfigScopeType type, const std::string &scope) const = 0;
452
453 // Protected method with single-value validation only (Tier 2)
455 pals_edit_mode_validated(ConfigScopeType type, const std::string &scope) const
456 {
457 auto raw_val = pals_edit_mode_raw(type, scope);
458 return raw_val;
459 }
460
461 // Protected virtual method that fetches raw value from provider (Tier 1)
463 pals_edit_mode_raw(ConfigScopeType type, const std::string &scope) const = 0;
464
465 // Protected method with single-value validation only (Tier 2)
466 [[nodiscard]] virtual ChainableResult<ConfigValue<bool>>
467 pal_hints_enabled_validated(ConfigScopeType type, const std::string &scope) const
468 {
469 auto raw_val = pal_hints_enabled_raw(type, scope);
470 return raw_val;
471 }
472
473 // Protected virtual method that fetches raw value from provider (Tier 1)
474 [[nodiscard]] virtual ChainableResult<ConfigValue<bool>>
475 pal_hints_enabled_raw(ConfigScopeType type, const std::string &scope) const = 0;
476
477 // Protected method with single-value validation only (Tier 2)
479 pal_hints_validated(ConfigScopeType type, const std::string &scope) const
480 {
481 auto raw_val = pal_hints_raw(type, scope);
482 return raw_val;
483 }
484
485 // Protected virtual method that fetches raw value from provider (Tier 1)
487 pal_hints_raw(ConfigScopeType type, const std::string &scope) const = 0;
488
489 // Protected method with single-value validation only (Tier 2)
491 packing_strategy_validated(ConfigScopeType type, const std::string &scope) const
492 {
493 auto raw_val = packing_strategy_raw(type, scope);
494 return raw_val;
495 }
496
497 // Protected virtual method that fetches raw value from provider (Tier 1)
499 packing_strategy_raw(ConfigScopeType type, const std::string &scope) const = 0;
500
501 // Protected method with single-value validation only (Tier 2)
503 packing_strategy_params_validated(ConfigScopeType type, const std::string &scope) const
504 {
505 auto raw_val = packing_strategy_params_raw(type, scope);
506 return raw_val;
507 }
508
509 // Protected virtual method that fetches raw value from provider (Tier 1)
511 packing_strategy_params_raw(ConfigScopeType type, const std::string &scope) const = 0;
512
513 // Protected method with single-value validation only (Tier 2)
515 tile_sharing_packing_validated(ConfigScopeType type, const std::string &scope) const
516 {
517 auto raw_val = tile_sharing_packing_raw(type, scope);
518 return raw_val;
519 }
520
521 // Protected virtual method that fetches raw value from provider (Tier 1)
523 tile_sharing_packing_raw(ConfigScopeType type, const std::string &scope) const = 0;
524
525 // Protected method with single-value validation only (Tier 2)
527 tile_sharing_alignment_validated(ConfigScopeType type, const std::string &scope) const
528 {
529 auto raw_val = tile_sharing_alignment_raw(type, scope);
530 return raw_val;
531 }
532
533 // Protected virtual method that fetches raw value from provider (Tier 1)
535 tile_sharing_alignment_raw(ConfigScopeType type, const std::string &scope) const = 0;
536
537 // Protected method with single-value validation only (Tier 2)
538 [[nodiscard]] virtual ChainableResult<ConfigValue<TilesPalMode>>
539 tiles_pal_mode_validated(ConfigScopeType type, const std::string &scope) const
540 {
541 auto raw_val = tiles_pal_mode_raw(type, scope);
542 return raw_val;
543 }
544
545 // Protected virtual method that fetches raw value from provider (Tier 1)
546 [[nodiscard]] virtual ChainableResult<ConfigValue<TilesPalMode>>
547 tiles_pal_mode_raw(ConfigScopeType type, const std::string &scope) const = 0;
548
549 // Protected method with single-value validation only (Tier 2)
552 {
553 auto raw_val = global_anim_pal_resolution_strategy_raw(type, scope);
554 return raw_val;
555 }
556
557 // Protected virtual method that fetches raw value from provider (Tier 1)
559 global_anim_pal_resolution_strategy_raw(ConfigScopeType type, const std::string &scope) const = 0;
560
561 // Protected method with single-value validation only (Tier 2)
564 {
565 auto raw_val = global_anim_key_frame_resolution_strategy_raw(type, scope);
566 return raw_val;
567 }
568
569 // Protected virtual method that fetches raw value from provider (Tier 1)
571 global_anim_key_frame_resolution_strategy_raw(ConfigScopeType type, const std::string &scope) const = 0;
572
573 // Protected method with single-value validation only (Tier 2)
576 {
578 return raw_val;
579 }
580
581 // Protected virtual method that fetches raw value from provider (Tier 1)
584
585 // Protected method with single-value validation only (Tier 2)
586 [[nodiscard]] virtual ChainableResult<ConfigValue<FrameLinking>>
587 global_frame_linking_validated(ConfigScopeType type, const std::string &scope) const
588 {
589 auto raw_val = global_frame_linking_raw(type, scope);
590 return raw_val;
591 }
592
593 // Protected virtual method that fetches raw value from provider (Tier 1)
594 [[nodiscard]] virtual ChainableResult<ConfigValue<FrameLinking>>
595 global_frame_linking_raw(ConfigScopeType type, const std::string &scope) const = 0;
596
597 // Protected method with single-value validation only (Tier 2)
599 per_anim_overrides_validated(ConfigScopeType type, const std::string &scope) const
600 {
601 auto raw_val = per_anim_overrides_raw(type, scope);
602 return raw_val;
603 }
604
605 // Protected virtual method that fetches raw value from provider (Tier 1)
607 per_anim_overrides_raw(ConfigScopeType type, const std::string &scope) const = 0;
608
609 // Protected method with single-value validation only (Tier 2)
610 [[nodiscard]] virtual ChainableResult<ConfigValue<bool>>
611 cross_tileset_anim_linking_validated(ConfigScopeType type, const std::string &scope) const
612 {
613 auto raw_val = cross_tileset_anim_linking_raw(type, scope);
614 return raw_val;
615 }
616
617 // Protected virtual method that fetches raw value from provider (Tier 1)
618 [[nodiscard]] virtual ChainableResult<ConfigValue<bool>>
619 cross_tileset_anim_linking_raw(ConfigScopeType type, const std::string &scope) const = 0;
620
621};
622
623} // namespace porytiles
A result type that maintains a chainable sequence of errors for debugging and error reporting.
Interface that defines a complete domain layer configuration.
virtual ChainableResult< ConfigValue< std::vector< PaletteHint > > > pal_hints_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< std::size_t > > num_pals_total_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< FrameLinking > > global_frame_linking_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< std::size_t > > num_tiles_in_primary_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< TileSharingPacking > > tile_sharing_packing(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > max_map_data_size_validated(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< std::vector< PaletteHint > > > pal_hints(ConfigScopeType type, const std::string &scope) const
virtual void add_provider(std::unique_ptr< ConfigProvider > provider)=0
Prepends a ConfigProvider to the provider chain at highest priority.
virtual ChainableResult< ConfigValue< std::size_t > > num_metatiles_total_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< ArtifactEditMode > > pals_edit_mode(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< ArtifactEditMode > > tiles_edit_mode(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< std::size_t > > num_tiles_in_primary(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > num_tiles_total_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< PackingStrategyParams > > packing_strategy_params_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< AnimMultiPalSubtileResolutionStrategy > > global_anim_multi_pal_subtile_resolution_strategy_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< std::size_t > > num_metatiles_in_primary_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< ArtifactEditMode > > pals_edit_mode_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< std::size_t > > num_pals_total_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > num_tiles_per_metatile_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > num_tiles_per_metatile_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< TileSharingPacking > > tile_sharing_packing_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< TilesPalMode > > tiles_pal_mode(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > num_pals_in_primary_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< Rgba32 > > extrinsic_transparency(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< PackingStrategyType > > packing_strategy(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< bool > > pal_hints_enabled_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< bool > > cross_tileset_anim_linking_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< ArtifactEditMode > > tiles_edit_mode_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< AnimMultiPalSubtileResolutionStrategy > > global_anim_multi_pal_subtile_resolution_strategy_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > num_tiles_in_primary_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< TilesPalMode > > tiles_pal_mode_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< bool > > pal_hints_enabled(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< ArtifactEditMode > > pals_edit_mode_validated(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< FrameLinking > > global_frame_linking(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > max_map_data_size_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< std::size_t > > num_metatiles_total(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< std::size_t > > num_tiles_per_metatile(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< Rgba32 > > extrinsic_transparency_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< PackingStrategyType > > packing_strategy_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< TileSharingAlignment > > tile_sharing_alignment_validated(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< bool > > cross_tileset_anim_linking(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< TileSharingAlignment > > tile_sharing_alignment_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< std::size_t > > num_metatiles_in_primary(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< Rgba32 > > extrinsic_transparency_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > num_pals_in_primary_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< AnimPalResolutionStrategy > > global_anim_pal_resolution_strategy_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< std::size_t > > num_pals_total(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< TilesPalMode > > tiles_pal_mode_validated(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< AnimMultiPalSubtileResolutionStrategy > > global_anim_multi_pal_subtile_resolution_strategy(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< AnimKeyFrameResolutionStrategy > > global_anim_key_frame_resolution_strategy(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< std::size_t > > max_map_data_size(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< TileSharingAlignment > > tile_sharing_alignment(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< std::size_t > > num_pals_in_primary(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< PerAnimOverrides > > per_anim_overrides(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< PackingStrategyParams > > packing_strategy_params(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< ArtifactEditMode > > tiles_edit_mode_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< bool > > pal_hints_enabled_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< std::size_t > > num_metatiles_in_primary_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< PerAnimOverrides > > per_anim_overrides_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< bool > > cross_tileset_anim_linking_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< AnimKeyFrameResolutionStrategy > > global_anim_key_frame_resolution_strategy_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< PackingStrategyParams > > packing_strategy_params_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< AnimPalResolutionStrategy > > global_anim_pal_resolution_strategy(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< AnimPalResolutionStrategy > > global_anim_pal_resolution_strategy_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > num_metatiles_total_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< FrameLinking > > global_frame_linking_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< PackingStrategyType > > packing_strategy_validated(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< std::size_t > > num_tiles_total(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< AnimKeyFrameResolutionStrategy > > global_anim_key_frame_resolution_strategy_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< TileSharingPacking > > tile_sharing_packing_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< PerAnimOverrides > > per_anim_overrides_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< std::vector< PaletteHint > > > pal_hints_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > num_tiles_total_validated(ConfigScopeType type, const std::string &scope) const
virtual ~DomainConfig()=default
Domain configuration validators for domain-layer models.
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.
ChainableResult< ConfigValue< std::size_t > > size_t_val_eight_or_twelve(const ConfigValue< std::size_t > &val)
Validates that a size_t config value is either 8 or 12.
ConfigScopeType
Specifies the scope type for configuration value lookups.
ChainableResult< ConfigValue< Rgba32 > > rgba_alpha_component_opaque(const ConfigValue< Rgba32 > &val)
Validates that an Rgba32 alpha component is opaque.
Cross-cutting configuration validators shared across all architectural layers.