127 if (str ==
"scan_local_metatiles") {
130 if (str ==
"palette_00") {
133 if (str ==
"palette_01") {
136 if (str ==
"palette_02") {
139 if (str ==
"palette_03") {
142 if (str ==
"palette_04") {
145 if (str ==
"palette_05") {
148 if (str ==
"palette_06") {
151 if (str ==
"palette_07") {
154 if (str ==
"palette_08") {
157 if (str ==
"palette_09") {
160 if (str ==
"palette_10") {
163 if (str ==
"palette_11") {
166 if (str ==
"palette_12") {
169 if (str ==
"palette_13") {
172 if (str ==
"palette_14") {
175 if (str ==
"palette_15") {
178 if (str ==
"internal_png_pal") {
181 if (str ==
"scan_all_tilesets") {
186 std::string lower_str = str;
187 std::ranges::transform(
188 lower_str, lower_str.begin(), [](
unsigned char c) { return static_cast<char>(std::tolower(c)); });
191 if (lower_str ==
"scan-local-metatiles") {
194 if (lower_str ==
"scan_local_metatiles") {
197 if (lower_str ==
"scanlocalmetatiles") {
201 if (lower_str ==
"palette-00") {
204 if (lower_str ==
"palette_00") {
207 if (lower_str ==
"palette00") {
210 if (lower_str ==
"pal-0") {
213 if (lower_str ==
"pal_0") {
216 if (lower_str ==
"pal0") {
219 if (lower_str ==
"palette-0") {
222 if (lower_str ==
"palette_0") {
225 if (lower_str ==
"palette0") {
229 if (lower_str ==
"palette-01") {
232 if (lower_str ==
"palette_01") {
235 if (lower_str ==
"palette01") {
238 if (lower_str ==
"pal-1") {
241 if (lower_str ==
"pal_1") {
244 if (lower_str ==
"pal1") {
247 if (lower_str ==
"palette-1") {
250 if (lower_str ==
"palette_1") {
253 if (lower_str ==
"palette1") {
257 if (lower_str ==
"palette-02") {
260 if (lower_str ==
"palette_02") {
263 if (lower_str ==
"palette02") {
266 if (lower_str ==
"pal-2") {
269 if (lower_str ==
"pal_2") {
272 if (lower_str ==
"pal2") {
275 if (lower_str ==
"palette-2") {
278 if (lower_str ==
"palette_2") {
281 if (lower_str ==
"palette2") {
285 if (lower_str ==
"palette-03") {
288 if (lower_str ==
"palette_03") {
291 if (lower_str ==
"palette03") {
294 if (lower_str ==
"pal-3") {
297 if (lower_str ==
"pal_3") {
300 if (lower_str ==
"pal3") {
303 if (lower_str ==
"palette-3") {
306 if (lower_str ==
"palette_3") {
309 if (lower_str ==
"palette3") {
313 if (lower_str ==
"palette-04") {
316 if (lower_str ==
"palette_04") {
319 if (lower_str ==
"palette04") {
322 if (lower_str ==
"pal-4") {
325 if (lower_str ==
"pal_4") {
328 if (lower_str ==
"pal4") {
331 if (lower_str ==
"palette-4") {
334 if (lower_str ==
"palette_4") {
337 if (lower_str ==
"palette4") {
341 if (lower_str ==
"palette-05") {
344 if (lower_str ==
"palette_05") {
347 if (lower_str ==
"palette05") {
350 if (lower_str ==
"pal-5") {
353 if (lower_str ==
"pal_5") {
356 if (lower_str ==
"pal5") {
359 if (lower_str ==
"palette-5") {
362 if (lower_str ==
"palette_5") {
365 if (lower_str ==
"palette5") {
369 if (lower_str ==
"palette-06") {
372 if (lower_str ==
"palette_06") {
375 if (lower_str ==
"palette06") {
378 if (lower_str ==
"pal-6") {
381 if (lower_str ==
"pal_6") {
384 if (lower_str ==
"pal6") {
387 if (lower_str ==
"palette-6") {
390 if (lower_str ==
"palette_6") {
393 if (lower_str ==
"palette6") {
397 if (lower_str ==
"palette-07") {
400 if (lower_str ==
"palette_07") {
403 if (lower_str ==
"palette07") {
406 if (lower_str ==
"pal-7") {
409 if (lower_str ==
"pal_7") {
412 if (lower_str ==
"pal7") {
415 if (lower_str ==
"palette-7") {
418 if (lower_str ==
"palette_7") {
421 if (lower_str ==
"palette7") {
425 if (lower_str ==
"palette-08") {
428 if (lower_str ==
"palette_08") {
431 if (lower_str ==
"palette08") {
434 if (lower_str ==
"pal-8") {
437 if (lower_str ==
"pal_8") {
440 if (lower_str ==
"pal8") {
443 if (lower_str ==
"palette-8") {
446 if (lower_str ==
"palette_8") {
449 if (lower_str ==
"palette8") {
453 if (lower_str ==
"palette-09") {
456 if (lower_str ==
"palette_09") {
459 if (lower_str ==
"palette09") {
462 if (lower_str ==
"pal-9") {
465 if (lower_str ==
"pal_9") {
468 if (lower_str ==
"pal9") {
471 if (lower_str ==
"palette-9") {
474 if (lower_str ==
"palette_9") {
477 if (lower_str ==
"palette9") {
481 if (lower_str ==
"palette-10") {
484 if (lower_str ==
"palette_10") {
487 if (lower_str ==
"palette10") {
490 if (lower_str ==
"pal-10") {
493 if (lower_str ==
"pal_10") {
496 if (lower_str ==
"pal10") {
500 if (lower_str ==
"palette-11") {
503 if (lower_str ==
"palette_11") {
506 if (lower_str ==
"palette11") {
509 if (lower_str ==
"pal-11") {
512 if (lower_str ==
"pal_11") {
515 if (lower_str ==
"pal11") {
519 if (lower_str ==
"palette-12") {
522 if (lower_str ==
"palette_12") {
525 if (lower_str ==
"palette12") {
528 if (lower_str ==
"pal-12") {
531 if (lower_str ==
"pal_12") {
534 if (lower_str ==
"pal12") {
538 if (lower_str ==
"palette-13") {
541 if (lower_str ==
"palette_13") {
544 if (lower_str ==
"palette13") {
547 if (lower_str ==
"pal-13") {
550 if (lower_str ==
"pal_13") {
553 if (lower_str ==
"pal13") {
557 if (lower_str ==
"palette-14") {
560 if (lower_str ==
"palette_14") {
563 if (lower_str ==
"palette14") {
566 if (lower_str ==
"pal-14") {
569 if (lower_str ==
"pal_14") {
572 if (lower_str ==
"pal14") {
576 if (lower_str ==
"palette-15") {
579 if (lower_str ==
"palette_15") {
582 if (lower_str ==
"palette15") {
585 if (lower_str ==
"pal-15") {
588 if (lower_str ==
"pal_15") {
591 if (lower_str ==
"pal15") {
595 if (lower_str ==
"internal-png-palette") {
598 if (lower_str ==
"internal_png_palette") {
601 if (lower_str ==
"internal-png-pal") {
604 if (lower_str ==
"internal_png_pal") {
607 if (lower_str ==
"internalpngpal") {
611 if (lower_str ==
"scan-all-tilesets") {
614 if (lower_str ==
"scan_all_tilesets") {
617 if (lower_str ==
"scanalltilesets") {
620 if (lower_str ==
"full-tileset-scan") {
623 if (lower_str ==
"full_tileset_scan") {
626 if (lower_str ==
"fulltilesetscan") {
647 return "scan_local_metatiles";
681 return "internal_png_pal";
683 return "scan_all_tilesets";
685 panic(
"unhandled AnimPalResolutionStrategy value");
703struct std::formatter<
porytiles::AnimPalResolutionStrategy> {
704 constexpr auto parse(std::format_parse_context &ctx)
void panic(const StringViewSourceLoc &s)
Unconditionally terminates the program with a panic message.
AnimPalResolutionStrategy
Strategy for determining which palette to use when decompiling animation tiles.
@ internal_png_pal
Use the Porymap-component frame PNG internal palette, if present.
@ scan_all_tilesets
Scan layouts config and find all tilesets paired with current tileset, see if an index is present in ...
@ palette_11
Use palette 11 directly.
@ palette_12
Use palette 12 directly.
@ palette_02
Use palette 02 directly.
@ palette_03
Use palette 03 directly.
@ palette_00
Use palette 00 directly.
@ palette_08
Use palette 08 directly.
@ palette_14
Use palette 14 directly.
@ palette_04
Use palette 04 directly.
@ palette_05
Use palette 05 directly.
@ palette_01
Use palette 01 directly.
@ palette_06
Use palette 06 directly.
@ palette_13
Use palette 13 directly.
@ palette_15
Use palette 15 directly.
@ palette_10
Use palette 10 directly.
@ scan_local_metatiles
Scan local tileset metatile entries to find palette references for the animation tiles.
@ palette_09
Use palette 09 directly.
@ palette_07
Use palette 07 directly.
std::optional< AnimPalResolutionStrategy > anim_pal_resolution_strategy_from_str(const std::string &str)
Parses a string into a AnimPalResolutionStrategy with fuzzy matching.
std::ostream & operator<<(std::ostream &os, const PrimaryPairingMode m)
Stream insertion operator for PrimaryPairingMode.
std::string to_string(const PrimaryPairingMode m)
Converts a PrimaryPairingMode to its canonical string representation.