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// NOTE: DO NOT EDIT THIS FILE DIRECTLY. It is AUTO-GENERATED from config_schema.yaml.
26// To add new config values or make other changes, edit config_schema.yaml and regenerate via:
27//
28// uv run scripts/generate_config.py
29
30class ConfigProvider; // forward declaration to avoid domain -> infra dependency
31
34 public:
35 virtual ~DomainConfig() = default;
36
45 virtual void add_provider(std::unique_ptr<ConfigProvider> provider) = 0;
46
47 // Public method with cross-field validation only (Tier 3)
49 num_tiles_in_primary(ConfigScopeType type, const std::string &scope) const
50 {
51 auto validated_val = num_tiles_in_primary_validated(type, scope);
52 // Apply cross-field validators
53 if (validated_val.has_value()) {
54 validated_val = compare_less_equal<std::size_t>(
55 validated_val.value(),
56 *this,
57 type,
58 scope,
59 "num_tiles_total",
60 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) {
61 return cfg.num_tiles_total_validated(t, s);
62 });
63 }
64 return validated_val;
65 }
66
67 // Public method with cross-field validation only (Tier 3)
69 num_tiles_total(ConfigScopeType type, const std::string &scope) const
70 {
71 auto validated_val = num_tiles_total_validated(type, scope);
72 // Apply cross-field validators
73 if (validated_val.has_value()) {
74 validated_val = compare_greater_equal<std::size_t>(
75 validated_val.value(),
76 *this,
77 type,
78 scope,
79 "num_tiles_in_primary",
80 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) {
81 return cfg.num_tiles_in_primary_validated(t, s);
82 });
83 }
84 return validated_val;
85 }
86
87 // Public method with cross-field validation only (Tier 3)
89 num_metatiles_in_primary(ConfigScopeType type, const std::string &scope) const
90 {
91 auto validated_val = num_metatiles_in_primary_validated(type, scope);
92 // Apply cross-field validators
93 if (validated_val.has_value()) {
94 validated_val = compare_less_equal<std::size_t>(
95 validated_val.value(),
96 *this,
97 type,
98 scope,
99 "num_metatiles_total",
100 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) {
101 return cfg.num_metatiles_total_validated(t, s);
102 });
103 }
104 return validated_val;
105 }
106
107 // Public method with cross-field validation only (Tier 3)
109 num_metatiles_total(ConfigScopeType type, const std::string &scope) const
110 {
111 auto validated_val = num_metatiles_total_validated(type, scope);
112 // Apply cross-field validators
113 if (validated_val.has_value()) {
114 validated_val = compare_greater_equal<std::size_t>(
115 validated_val.value(),
116 *this,
117 type,
118 scope,
119 "num_metatiles_in_primary",
120 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) {
121 return cfg.num_metatiles_in_primary_validated(t, s);
122 });
123 }
124 return validated_val;
125 }
126
127 // Public method with cross-field validation only (Tier 3)
129 num_palettes_in_primary(ConfigScopeType type, const std::string &scope) const
130 {
131 auto validated_val = num_palettes_in_primary_validated(type, scope);
132 // Apply cross-field validators
133 if (validated_val.has_value()) {
134 validated_val = compare_less_equal<std::size_t>(
135 validated_val.value(),
136 *this,
137 type,
138 scope,
139 "num_palettes_total",
140 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) {
141 return cfg.num_palettes_total_validated(t, s);
142 });
143 }
144 return validated_val;
145 }
146
147 // Public method with cross-field validation only (Tier 3)
149 num_palettes_total(ConfigScopeType type, const std::string &scope) const
150 {
151 auto validated_val = num_palettes_total_validated(type, scope);
152 // Apply cross-field validators
153 if (validated_val.has_value()) {
154 validated_val = compare_greater_equal<std::size_t>(
155 validated_val.value(),
156 *this,
157 type,
158 scope,
159 "num_palettes_in_primary",
160 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) {
161 return cfg.num_palettes_in_primary_validated(t, s);
162 });
163 }
164 return validated_val;
165 }
166
167 // Public method with cross-field validation only (Tier 3)
169 max_map_data_size(ConfigScopeType type, const std::string &scope) const
170 {
171 auto validated_val = max_map_data_size_validated(type, scope);
172 return validated_val;
173 }
174
175 // Public method with cross-field validation only (Tier 3)
177 num_tiles_per_metatile(ConfigScopeType type, const std::string &scope) const
178 {
179 auto validated_val = num_tiles_per_metatile_validated(type, scope);
180 return validated_val;
181 }
182
183 // Public method with cross-field validation only (Tier 3)
185 extrinsic_transparency(ConfigScopeType type, const std::string &scope) const
186 {
187 auto validated_val = extrinsic_transparency_validated(type, scope);
188 return validated_val;
189 }
190
191 // Public method with cross-field validation only (Tier 3)
193 ignore_triple_layer_content(ConfigScopeType type, const std::string &scope) const
194 {
195 auto validated_val = ignore_triple_layer_content_validated(type, scope);
196 return validated_val;
197 }
198
199 // Public method with cross-field validation only (Tier 3)
201 tiles_edit_mode(ConfigScopeType type, const std::string &scope) const
202 {
203 auto validated_val = tiles_edit_mode_validated(type, scope);
204 return validated_val;
205 }
206
207 // Public method with cross-field validation only (Tier 3)
209 palettes_edit_mode(ConfigScopeType type, const std::string &scope) const
210 {
211 auto validated_val = palettes_edit_mode_validated(type, scope);
212 return validated_val;
213 }
214
215 // Public method with cross-field validation only (Tier 3)
217 palette_hints_enabled(ConfigScopeType type, const std::string &scope) const
218 {
219 auto validated_val = palette_hints_enabled_validated(type, scope);
220 return validated_val;
221 }
222
223 // Public method with cross-field validation only (Tier 3)
225 palette_hints(ConfigScopeType type, const std::string &scope) const
226 {
227 auto validated_val = palette_hints_validated(type, scope);
228 return validated_val;
229 }
230
231 // Public method with cross-field validation only (Tier 3)
233 packing_strategy(ConfigScopeType type, const std::string &scope) const
234 {
235 auto validated_val = packing_strategy_validated(type, scope);
236 return validated_val;
237 }
238
239 // Public method with cross-field validation only (Tier 3)
241 packing_strategy_params(ConfigScopeType type, const std::string &scope) const
242 {
243 auto validated_val = packing_strategy_params_validated(type, scope);
244 return validated_val;
245 }
246
247 // Public method with cross-field validation only (Tier 3)
249 tile_sharing_packing(ConfigScopeType type, const std::string &scope) const
250 {
251 auto validated_val = tile_sharing_packing_validated(type, scope);
252 // Apply cross-field validators
253 if (validated_val.has_value()) {
254 validated_val = require_packing_strategy_backtracking<TileSharingPacking>(
255 validated_val.value(),
256 *this,
257 type,
258 scope,
259 "packing_strategy",
260 [](const DomainConfig &cfg, ConfigScopeType t, const std::string &s) {
261 return cfg.packing_strategy_validated(t, s);
262 });
263 }
264 return validated_val;
265 }
266
267 // Public method with cross-field validation only (Tier 3)
269 tile_sharing_alignment(ConfigScopeType type, const std::string &scope) const
270 {
271 auto validated_val = tile_sharing_alignment_validated(type, scope);
272 return validated_val;
273 }
274
275 // Public method with cross-field validation only (Tier 3)
277 tiles_palette_mode(ConfigScopeType type, const std::string &scope) const
278 {
279 auto validated_val = tiles_palette_mode_validated(type, scope);
280 return validated_val;
281 }
282
283 // Public method with cross-field validation only (Tier 3)
285 global_anim_palette_resolution_strategy(ConfigScopeType type, const std::string &scope) const
286 {
287 auto validated_val = global_anim_palette_resolution_strategy_validated(type, scope);
288 return validated_val;
289 }
290
291 // Public method with cross-field validation only (Tier 3)
293 global_anim_key_frame_resolution_strategy(ConfigScopeType type, const std::string &scope) const
294 {
295 auto validated_val = global_anim_key_frame_resolution_strategy_validated(type, scope);
296 return validated_val;
297 }
298
299 // Public method with cross-field validation only (Tier 3)
302 {
304 return validated_val;
305 }
306
307 // Public method with cross-field validation only (Tier 3)
309 global_frame_linking(ConfigScopeType type, const std::string &scope) const
310 {
311 auto validated_val = global_frame_linking_validated(type, scope);
312 return validated_val;
313 }
314
315 // Public method with cross-field validation only (Tier 3)
317 per_anim_overrides(ConfigScopeType type, const std::string &scope) const
318 {
319 auto validated_val = per_anim_overrides_validated(type, scope);
320 return validated_val;
321 }
322
323 // Public method with cross-field validation only (Tier 3)
325 cross_tileset_anim_linking(ConfigScopeType type, const std::string &scope) const
326 {
327 auto validated_val = cross_tileset_anim_linking_validated(type, scope);
328 return validated_val;
329 }
330
331 protected:
332 // Protected method with single-value validation only (Tier 2)
333 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
334 num_tiles_in_primary_validated(ConfigScopeType type, const std::string &scope) const
335 {
336 auto raw_val = num_tiles_in_primary_raw(type, scope);
337 // Apply validators in sequence
338 if (raw_val.has_value()) {
339 raw_val = size_t_val_greater_than_zero(raw_val.value());
340 }
341 return raw_val;
342 }
343
344 // Protected virtual method that fetches raw value from provider (Tier 1)
345 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
346 num_tiles_in_primary_raw(ConfigScopeType type, const std::string &scope) const = 0;
347
348 // Protected method with single-value validation only (Tier 2)
349 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
350 num_tiles_total_validated(ConfigScopeType type, const std::string &scope) const
351 {
352 auto raw_val = num_tiles_total_raw(type, scope);
353 // Apply validators in sequence
354 if (raw_val.has_value()) {
355 raw_val = size_t_val_greater_than_zero(raw_val.value());
356 }
357 return raw_val;
358 }
359
360 // Protected virtual method that fetches raw value from provider (Tier 1)
361 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
362 num_tiles_total_raw(ConfigScopeType type, const std::string &scope) const = 0;
363
364 // Protected method with single-value validation only (Tier 2)
365 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
366 num_metatiles_in_primary_validated(ConfigScopeType type, const std::string &scope) const
367 {
368 auto raw_val = num_metatiles_in_primary_raw(type, scope);
369 // Apply validators in sequence
370 if (raw_val.has_value()) {
371 raw_val = size_t_val_greater_than_zero(raw_val.value());
372 }
373 return raw_val;
374 }
375
376 // Protected virtual method that fetches raw value from provider (Tier 1)
377 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
378 num_metatiles_in_primary_raw(ConfigScopeType type, const std::string &scope) const = 0;
379
380 // Protected method with single-value validation only (Tier 2)
381 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
382 num_metatiles_total_validated(ConfigScopeType type, const std::string &scope) const
383 {
384 auto raw_val = num_metatiles_total_raw(type, scope);
385 // Apply validators in sequence
386 if (raw_val.has_value()) {
387 raw_val = size_t_val_greater_than_zero(raw_val.value());
388 }
389 return raw_val;
390 }
391
392 // Protected virtual method that fetches raw value from provider (Tier 1)
393 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
394 num_metatiles_total_raw(ConfigScopeType type, const std::string &scope) const = 0;
395
396 // Protected method with single-value validation only (Tier 2)
397 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
398 num_palettes_in_primary_validated(ConfigScopeType type, const std::string &scope) const
399 {
400 auto raw_val = num_palettes_in_primary_raw(type, scope);
401 // Apply validators in sequence
402 if (raw_val.has_value()) {
403 raw_val = size_t_val_greater_than_zero(raw_val.value());
404 }
405 return raw_val;
406 }
407
408 // Protected virtual method that fetches raw value from provider (Tier 1)
409 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
410 num_palettes_in_primary_raw(ConfigScopeType type, const std::string &scope) const = 0;
411
412 // Protected method with single-value validation only (Tier 2)
413 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
414 num_palettes_total_validated(ConfigScopeType type, const std::string &scope) const
415 {
416 auto raw_val = num_palettes_total_raw(type, scope);
417 // Apply validators in sequence
418 if (raw_val.has_value()) {
419 raw_val = size_t_val_greater_than_zero(raw_val.value());
420 }
421 return raw_val;
422 }
423
424 // Protected virtual method that fetches raw value from provider (Tier 1)
425 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
426 num_palettes_total_raw(ConfigScopeType type, const std::string &scope) const = 0;
427
428 // Protected method with single-value validation only (Tier 2)
429 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
430 max_map_data_size_validated(ConfigScopeType type, const std::string &scope) const
431 {
432 auto raw_val = max_map_data_size_raw(type, scope);
433 // Apply validators in sequence
434 if (raw_val.has_value()) {
435 raw_val = size_t_val_greater_than_zero(raw_val.value());
436 }
437 return raw_val;
438 }
439
440 // Protected virtual method that fetches raw value from provider (Tier 1)
441 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
442 max_map_data_size_raw(ConfigScopeType type, const std::string &scope) const = 0;
443
444 // Protected method with single-value validation only (Tier 2)
445 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
446 num_tiles_per_metatile_validated(ConfigScopeType type, const std::string &scope) const
447 {
448 auto raw_val = num_tiles_per_metatile_raw(type, scope);
449 // Apply validators in sequence
450 if (raw_val.has_value()) {
451 raw_val = size_t_val_eight_or_twelve(raw_val.value());
452 }
453 return raw_val;
454 }
455
456 // Protected virtual method that fetches raw value from provider (Tier 1)
457 [[nodiscard]] virtual ChainableResult<ConfigValue<std::size_t>>
458 num_tiles_per_metatile_raw(ConfigScopeType type, const std::string &scope) const = 0;
459
460 // Protected method with single-value validation only (Tier 2)
461 [[nodiscard]] virtual ChainableResult<ConfigValue<Rgba32>>
462 extrinsic_transparency_validated(ConfigScopeType type, const std::string &scope) const
463 {
464 auto raw_val = extrinsic_transparency_raw(type, scope);
465 // Apply validators in sequence
466 if (raw_val.has_value()) {
467 raw_val = rgba_alpha_component_opaque(raw_val.value());
468 }
469 return raw_val;
470 }
471
472 // Protected virtual method that fetches raw value from provider (Tier 1)
473 [[nodiscard]] virtual ChainableResult<ConfigValue<Rgba32>>
474 extrinsic_transparency_raw(ConfigScopeType type, const std::string &scope) const = 0;
475
476 // Protected method with single-value validation only (Tier 2)
477 [[nodiscard]] virtual ChainableResult<ConfigValue<bool>>
478 ignore_triple_layer_content_validated(ConfigScopeType type, const std::string &scope) const
479 {
480 auto raw_val = ignore_triple_layer_content_raw(type, scope);
481 return raw_val;
482 }
483
484 // Protected virtual method that fetches raw value from provider (Tier 1)
485 [[nodiscard]] virtual ChainableResult<ConfigValue<bool>>
486 ignore_triple_layer_content_raw(ConfigScopeType type, const std::string &scope) const = 0;
487
488 // Protected method with single-value validation only (Tier 2)
490 tiles_edit_mode_validated(ConfigScopeType type, const std::string &scope) const
491 {
492 auto raw_val = tiles_edit_mode_raw(type, scope);
493 return raw_val;
494 }
495
496 // Protected virtual method that fetches raw value from provider (Tier 1)
498 tiles_edit_mode_raw(ConfigScopeType type, const std::string &scope) const = 0;
499
500 // Protected method with single-value validation only (Tier 2)
502 palettes_edit_mode_validated(ConfigScopeType type, const std::string &scope) const
503 {
504 auto raw_val = palettes_edit_mode_raw(type, scope);
505 return raw_val;
506 }
507
508 // Protected virtual method that fetches raw value from provider (Tier 1)
510 palettes_edit_mode_raw(ConfigScopeType type, const std::string &scope) const = 0;
511
512 // Protected method with single-value validation only (Tier 2)
513 [[nodiscard]] virtual ChainableResult<ConfigValue<bool>>
514 palette_hints_enabled_validated(ConfigScopeType type, const std::string &scope) const
515 {
516 auto raw_val = palette_hints_enabled_raw(type, scope);
517 return raw_val;
518 }
519
520 // Protected virtual method that fetches raw value from provider (Tier 1)
521 [[nodiscard]] virtual ChainableResult<ConfigValue<bool>>
522 palette_hints_enabled_raw(ConfigScopeType type, const std::string &scope) const = 0;
523
524 // Protected method with single-value validation only (Tier 2)
526 palette_hints_validated(ConfigScopeType type, const std::string &scope) const
527 {
528 auto raw_val = palette_hints_raw(type, scope);
529 return raw_val;
530 }
531
532 // Protected virtual method that fetches raw value from provider (Tier 1)
534 palette_hints_raw(ConfigScopeType type, const std::string &scope) const = 0;
535
536 // Protected method with single-value validation only (Tier 2)
538 packing_strategy_validated(ConfigScopeType type, const std::string &scope) const
539 {
540 auto raw_val = packing_strategy_raw(type, scope);
541 return raw_val;
542 }
543
544 // Protected virtual method that fetches raw value from provider (Tier 1)
546 packing_strategy_raw(ConfigScopeType type, const std::string &scope) const = 0;
547
548 // Protected method with single-value validation only (Tier 2)
550 packing_strategy_params_validated(ConfigScopeType type, const std::string &scope) const
551 {
552 auto raw_val = packing_strategy_params_raw(type, scope);
553 return raw_val;
554 }
555
556 // Protected virtual method that fetches raw value from provider (Tier 1)
558 packing_strategy_params_raw(ConfigScopeType type, const std::string &scope) const = 0;
559
560 // Protected method with single-value validation only (Tier 2)
562 tile_sharing_packing_validated(ConfigScopeType type, const std::string &scope) const
563 {
564 auto raw_val = tile_sharing_packing_raw(type, scope);
565 return raw_val;
566 }
567
568 // Protected virtual method that fetches raw value from provider (Tier 1)
570 tile_sharing_packing_raw(ConfigScopeType type, const std::string &scope) const = 0;
571
572 // Protected method with single-value validation only (Tier 2)
574 tile_sharing_alignment_validated(ConfigScopeType type, const std::string &scope) const
575 {
576 auto raw_val = tile_sharing_alignment_raw(type, scope);
577 return raw_val;
578 }
579
580 // Protected virtual method that fetches raw value from provider (Tier 1)
582 tile_sharing_alignment_raw(ConfigScopeType type, const std::string &scope) const = 0;
583
584 // Protected method with single-value validation only (Tier 2)
586 tiles_palette_mode_validated(ConfigScopeType type, const std::string &scope) const
587 {
588 auto raw_val = tiles_palette_mode_raw(type, scope);
589 return raw_val;
590 }
591
592 // Protected virtual method that fetches raw value from provider (Tier 1)
594 tiles_palette_mode_raw(ConfigScopeType type, const std::string &scope) const = 0;
595
596 // Protected method with single-value validation only (Tier 2)
599 {
600 auto raw_val = global_anim_palette_resolution_strategy_raw(type, scope);
601 return raw_val;
602 }
603
604 // Protected virtual method that fetches raw value from provider (Tier 1)
606 global_anim_palette_resolution_strategy_raw(ConfigScopeType type, const std::string &scope) const = 0;
607
608 // Protected method with single-value validation only (Tier 2)
611 {
612 auto raw_val = global_anim_key_frame_resolution_strategy_raw(type, scope);
613 return raw_val;
614 }
615
616 // Protected virtual method that fetches raw value from provider (Tier 1)
618 global_anim_key_frame_resolution_strategy_raw(ConfigScopeType type, const std::string &scope) const = 0;
619
620 // Protected method with single-value validation only (Tier 2)
623 ConfigScopeType type, const std::string &scope) const
624 {
626 return raw_val;
627 }
628
629 // Protected virtual method that fetches raw value from provider (Tier 1)
632
633 // Protected method with single-value validation only (Tier 2)
634 [[nodiscard]] virtual ChainableResult<ConfigValue<FrameLinking>>
635 global_frame_linking_validated(ConfigScopeType type, const std::string &scope) const
636 {
637 auto raw_val = global_frame_linking_raw(type, scope);
638 return raw_val;
639 }
640
641 // Protected virtual method that fetches raw value from provider (Tier 1)
642 [[nodiscard]] virtual ChainableResult<ConfigValue<FrameLinking>>
643 global_frame_linking_raw(ConfigScopeType type, const std::string &scope) const = 0;
644
645 // Protected method with single-value validation only (Tier 2)
647 per_anim_overrides_validated(ConfigScopeType type, const std::string &scope) const
648 {
649 auto raw_val = per_anim_overrides_raw(type, scope);
650 return raw_val;
651 }
652
653 // Protected virtual method that fetches raw value from provider (Tier 1)
655 per_anim_overrides_raw(ConfigScopeType type, const std::string &scope) const = 0;
656
657 // Protected method with single-value validation only (Tier 2)
658 [[nodiscard]] virtual ChainableResult<ConfigValue<bool>>
659 cross_tileset_anim_linking_validated(ConfigScopeType type, const std::string &scope) const
660 {
661 auto raw_val = cross_tileset_anim_linking_raw(type, scope);
662 return raw_val;
663 }
664
665 // Protected virtual method that fetches raw value from provider (Tier 1)
666 [[nodiscard]] virtual ChainableResult<ConfigValue<bool>>
667 cross_tileset_anim_linking_raw(ConfigScopeType type, const std::string &scope) const = 0;
668};
669
670} // 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< TilesPaletteMode > > tiles_palette_mode_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
virtual ChainableResult< ConfigValue< TilesPaletteMode > > tiles_palette_mode_validated(ConfigScopeType type, const std::string &scope) const
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
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 > > 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< bool > > ignore_triple_layer_content_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< AnimPaletteResolutionStrategy > > global_anim_palette_resolution_strategy_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< std::size_t > > num_tiles_total_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< std::vector< PaletteHint > > > palette_hints_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< PackingStrategyParams > > packing_strategy_params_validated(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< bool > > ignore_triple_layer_content(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< std::size_t > > num_palettes_in_primary(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< std::vector< PaletteHint > > > palette_hints(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< ArtifactEditMode > > palettes_edit_mode_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > num_metatiles_in_primary_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< AnimPaletteResolutionStrategy > > global_anim_palette_resolution_strategy_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
virtual ChainableResult< ConfigValue< std::size_t > > num_palettes_in_primary_validated(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< Rgba32 > > extrinsic_transparency(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > num_palettes_in_primary_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< PackingStrategyType > > packing_strategy(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< AnimMultiPaletteSubtileResolutionStrategy > > global_anim_multi_palette_subtile_resolution_strategy_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< AnimMultiPaletteSubtileResolutionStrategy > > global_anim_multi_palette_subtile_resolution_strategy_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< std::size_t > > num_tiles_in_primary_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< bool > > palette_hints_enabled_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::vector< PaletteHint > > > palette_hints_validated(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
virtual ChainableResult< ConfigValue< std::size_t > > num_palettes_total_validated(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
ChainableResult< ConfigValue< ArtifactEditMode > > palettes_edit_mode(ConfigScopeType type, const std::string &scope) const
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< bool > > palette_hints_enabled_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< AnimPaletteResolutionStrategy > > global_anim_palette_resolution_strategy(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< TileSharingAlignment > > tile_sharing_alignment_raw(ConfigScopeType type, const std::string &scope) const =0
virtual ChainableResult< ConfigValue< bool > > ignore_triple_layer_content_validated(ConfigScopeType type, const std::string &scope) const
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
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< 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< 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< std::size_t > > num_palettes_total(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< std::size_t > > num_palettes_total_raw(ConfigScopeType type, const std::string &scope) const =0
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< bool > > palette_hints_enabled(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< std::size_t > > num_tiles_total(ConfigScopeType type, const std::string &scope) const
ChainableResult< ConfigValue< AnimMultiPaletteSubtileResolutionStrategy > > global_anim_multi_palette_subtile_resolution_strategy(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::size_t > > num_tiles_total_validated(ConfigScopeType type, const std::string &scope) const
virtual ChainableResult< ConfigValue< ArtifactEditMode > > palettes_edit_mode_raw(ConfigScopeType type, const std::string &scope) const =0
ChainableResult< ConfigValue< TilesPaletteMode > > tiles_palette_mode(ConfigScopeType type, const std::string &scope) const
virtual ~DomainConfig()=default
Domain configuration validators for domain-layer models.
std::optional< ProviderDefinition > provider
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.