80[[nodiscard]]
inline std::optional<AnimPaletteResolutionStrategy>
84 if (str ==
"scan_local_metatiles") {
87 if (str ==
"palette_00") {
90 if (str ==
"palette_01") {
93 if (str ==
"palette_02") {
96 if (str ==
"palette_03") {
99 if (str ==
"palette_04") {
102 if (str ==
"palette_05") {
105 if (str ==
"palette_06") {
108 if (str ==
"palette_07") {
111 if (str ==
"palette_08") {
114 if (str ==
"palette_09") {
117 if (str ==
"palette_10") {
120 if (str ==
"palette_11") {
123 if (str ==
"palette_12") {
126 if (str ==
"palette_13") {
129 if (str ==
"palette_14") {
132 if (str ==
"palette_15") {
135 if (str ==
"internal_png_palette") {
138 if (str ==
"scan_all_tilesets") {
143 std::string lower_str = str;
144 std::ranges::transform(
145 lower_str, lower_str.begin(), [](
unsigned char c) { return static_cast<char>(std::tolower(c)); });
148 if (lower_str ==
"scan-local-metatiles") {
151 if (lower_str ==
"scan_local_metatiles") {
154 if (lower_str ==
"scanlocalmetatiles") {
158 if (lower_str ==
"palette-00") {
161 if (lower_str ==
"palette_00") {
164 if (lower_str ==
"palette00") {
167 if (lower_str ==
"pal-0") {
170 if (lower_str ==
"pal_0") {
173 if (lower_str ==
"pal0") {
176 if (lower_str ==
"palette-0") {
179 if (lower_str ==
"palette_0") {
182 if (lower_str ==
"palette0") {
186 if (lower_str ==
"palette-01") {
189 if (lower_str ==
"palette_01") {
192 if (lower_str ==
"palette01") {
195 if (lower_str ==
"pal-1") {
198 if (lower_str ==
"pal_1") {
201 if (lower_str ==
"pal1") {
204 if (lower_str ==
"palette-1") {
207 if (lower_str ==
"palette_1") {
210 if (lower_str ==
"palette1") {
214 if (lower_str ==
"palette-02") {
217 if (lower_str ==
"palette_02") {
220 if (lower_str ==
"palette02") {
223 if (lower_str ==
"pal-2") {
226 if (lower_str ==
"pal_2") {
229 if (lower_str ==
"pal2") {
232 if (lower_str ==
"palette-2") {
235 if (lower_str ==
"palette_2") {
238 if (lower_str ==
"palette2") {
242 if (lower_str ==
"palette-03") {
245 if (lower_str ==
"palette_03") {
248 if (lower_str ==
"palette03") {
251 if (lower_str ==
"pal-3") {
254 if (lower_str ==
"pal_3") {
257 if (lower_str ==
"pal3") {
260 if (lower_str ==
"palette-3") {
263 if (lower_str ==
"palette_3") {
266 if (lower_str ==
"palette3") {
270 if (lower_str ==
"palette-04") {
273 if (lower_str ==
"palette_04") {
276 if (lower_str ==
"palette04") {
279 if (lower_str ==
"pal-4") {
282 if (lower_str ==
"pal_4") {
285 if (lower_str ==
"pal4") {
288 if (lower_str ==
"palette-4") {
291 if (lower_str ==
"palette_4") {
294 if (lower_str ==
"palette4") {
298 if (lower_str ==
"palette-05") {
301 if (lower_str ==
"palette_05") {
304 if (lower_str ==
"palette05") {
307 if (lower_str ==
"pal-5") {
310 if (lower_str ==
"pal_5") {
313 if (lower_str ==
"pal5") {
316 if (lower_str ==
"palette-5") {
319 if (lower_str ==
"palette_5") {
322 if (lower_str ==
"palette5") {
326 if (lower_str ==
"palette-06") {
329 if (lower_str ==
"palette_06") {
332 if (lower_str ==
"palette06") {
335 if (lower_str ==
"pal-6") {
338 if (lower_str ==
"pal_6") {
341 if (lower_str ==
"pal6") {
344 if (lower_str ==
"palette-6") {
347 if (lower_str ==
"palette_6") {
350 if (lower_str ==
"palette6") {
354 if (lower_str ==
"palette-07") {
357 if (lower_str ==
"palette_07") {
360 if (lower_str ==
"palette07") {
363 if (lower_str ==
"pal-7") {
366 if (lower_str ==
"pal_7") {
369 if (lower_str ==
"pal7") {
372 if (lower_str ==
"palette-7") {
375 if (lower_str ==
"palette_7") {
378 if (lower_str ==
"palette7") {
382 if (lower_str ==
"palette-08") {
385 if (lower_str ==
"palette_08") {
388 if (lower_str ==
"palette08") {
391 if (lower_str ==
"pal-8") {
394 if (lower_str ==
"pal_8") {
397 if (lower_str ==
"pal8") {
400 if (lower_str ==
"palette-8") {
403 if (lower_str ==
"palette_8") {
406 if (lower_str ==
"palette8") {
410 if (lower_str ==
"palette-09") {
413 if (lower_str ==
"palette_09") {
416 if (lower_str ==
"palette09") {
419 if (lower_str ==
"pal-9") {
422 if (lower_str ==
"pal_9") {
425 if (lower_str ==
"pal9") {
428 if (lower_str ==
"palette-9") {
431 if (lower_str ==
"palette_9") {
434 if (lower_str ==
"palette9") {
438 if (lower_str ==
"palette-10") {
441 if (lower_str ==
"palette_10") {
444 if (lower_str ==
"palette10") {
447 if (lower_str ==
"pal-10") {
450 if (lower_str ==
"pal_10") {
453 if (lower_str ==
"pal10") {
457 if (lower_str ==
"palette-11") {
460 if (lower_str ==
"palette_11") {
463 if (lower_str ==
"palette11") {
466 if (lower_str ==
"pal-11") {
469 if (lower_str ==
"pal_11") {
472 if (lower_str ==
"pal11") {
476 if (lower_str ==
"palette-12") {
479 if (lower_str ==
"palette_12") {
482 if (lower_str ==
"palette12") {
485 if (lower_str ==
"pal-12") {
488 if (lower_str ==
"pal_12") {
491 if (lower_str ==
"pal12") {
495 if (lower_str ==
"palette-13") {
498 if (lower_str ==
"palette_13") {
501 if (lower_str ==
"palette13") {
504 if (lower_str ==
"pal-13") {
507 if (lower_str ==
"pal_13") {
510 if (lower_str ==
"pal13") {
514 if (lower_str ==
"palette-14") {
517 if (lower_str ==
"palette_14") {
520 if (lower_str ==
"palette14") {
523 if (lower_str ==
"pal-14") {
526 if (lower_str ==
"pal_14") {
529 if (lower_str ==
"pal14") {
533 if (lower_str ==
"palette-15") {
536 if (lower_str ==
"palette_15") {
539 if (lower_str ==
"palette15") {
542 if (lower_str ==
"pal-15") {
545 if (lower_str ==
"pal_15") {
548 if (lower_str ==
"pal15") {
552 if (lower_str ==
"internal-png-palette") {
555 if (lower_str ==
"internal_png_palette") {
558 if (lower_str ==
"internal-png-pal") {
561 if (lower_str ==
"internal_png_pal") {
564 if (lower_str ==
"internalpngpal") {
568 if (lower_str ==
"scan-all-tilesets") {
571 if (lower_str ==
"scan_all_tilesets") {
574 if (lower_str ==
"scanalltilesets") {
577 if (lower_str ==
"full-tileset-scan") {
580 if (lower_str ==
"full_tileset_scan") {
583 if (lower_str ==
"fulltilesetscan") {
602 return "scan_local_metatiles";
636 return "internal_png_palette";
638 return "scan_all_tilesets";
640 panic(
"unhandled AnimPaletteResolutionStrategy value");
656struct std::formatter<
porytiles::AnimPaletteResolutionStrategy> {
657 constexpr auto parse(std::format_parse_context &ctx)
void panic(const StringViewSourceLoc &s)
Unconditionally terminates the program with a panic message.
std::ostream & operator<<(std::ostream &os, const PrimaryPairingMode m)
Stream insertion operator for PrimaryPairingMode.
AnimPaletteResolutionStrategy
Strategy for determining which palette to use when decompiling animation tiles.
@ 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.
@ internal_png_palette
Use the Porymap-component frame PNG internal palette, if present.
@ palette_09
Use palette 09 directly.
@ palette_07
Use palette 07 directly.
std::optional< AnimPaletteResolutionStrategy > anim_palette_resolution_strategy_from_str(const std::string &str)
Parses a string into a AnimPaletteResolutionStrategy with fuzzy matching.
std::string to_string(const PrimaryPairingMode m)
Converts a PrimaryPairingMode to its canonical string representation.