Porytiles
Loading...
Searching...
No Matches
cli_option_registration.cpp
Go to the documentation of this file.
2
3#include <string>
4
5/*
6 * NOTE: DO NOT EDIT THIS FILE DIRECTLY. It is AUTO-GENERATED from config_schema.yaml.
7 * To add new config values or make other changes, edit config_schema.yaml and regenerate via:
8 *
9 * uv run scripts/generate_config.py
10 */
11
12namespace porytiles {
13
14void register_config_options(CLI::App &app, CliOptionStorage &storage)
15{
16 auto *config_group = app.add_option_group("Config Options", "Override configuration values");
17 config_group->footer(""); // Clear inherited footer to prevent duplication in help output
18
19 // Number Of Tiles In Primary (std::size_t, captured as string, parsed by CliOptionProvider)
20 config_group->add_option(
21 "--num-tiles-in-primary",
23 "Number Of Tiles In Primary - The NUM_TILES_IN_PRIMARY setting from include/fieldmap.h.");
24
25 // Number Of Tiles Total (std::size_t, captured as string, parsed by CliOptionProvider)
26 config_group->add_option(
27 "--num-tiles-total",
28 storage.num_tiles_total,
29 "Number Of Tiles Total - The NUM_TILES_TOTAL setting from include/fieldmap.h.");
30
31 // Number Of Metatiles In Primary (std::size_t, captured as string, parsed by CliOptionProvider)
32 config_group->add_option(
33 "--num-metatiles-in-primary",
35 "Number Of Metatiles In Primary - The NUM_METATILES_IN_PRIMARY setting from include/fieldmap.h.");
36
37 // Number Of Metatiles Total (std::size_t, captured as string, parsed by CliOptionProvider)
38 config_group->add_option(
39 "--num-metatiles-total",
40 storage.num_metatiles_total,
41 "Number Of Metatiles Total - The NUM_METATILES_TOTAL setting from include/fieldmap.h.");
42
43 // Number Of Palettes In Primary (std::size_t, captured as string, parsed by CliOptionProvider)
44 config_group->add_option(
45 "--num-pals-in-primary",
46 storage.num_pals_in_primary,
47 "Number Of Palettes In Primary - The NUM_PALS_IN_PRIMARY setting from include/fieldmap.h.");
48
49 // Number Of Palettes Total (std::size_t, captured as string, parsed by CliOptionProvider)
50 config_group->add_option(
51 "--num-pals-total",
52 storage.num_pals_total,
53 "Number Of Palettes Total - The NUM_PALS_TOTAL setting from include/fieldmap.h.");
54
55 // Max Map Data Size (std::size_t, captured as string, parsed by CliOptionProvider)
56 config_group->add_option(
57 "--max-map-data-size",
58 storage.max_map_data_size,
59 "Max Map Data Size - The MAX_MAP_DATA_SIZE setting from include/fieldmap.h.");
60
61 // Number Of Tiles Per Metatile (std::size_t, captured as string, parsed by CliOptionProvider)
62 config_group->add_option(
63 "--num-tiles-per-metatile",
65 "Number Of Tiles Per Metatile - The NUM_TILES_PER_METATILE setting from include/fieldmap.h.");
66
67 // Extrinsic Transparency (Rgba32, captured as string, parsed by CliOptionProvider)
68 config_group->add_option(
69 "--extrinsic-transparency",
71 "Extrinsic Transparency - The RGB color to treat as transparent during compilation. (format: R,G,B or R,G,B,A, values 0-255)")
72 ->type_name("R,G,B[,A]");
73
74 // Tiles Edit Mode (enum ArtifactEditMode, captured as string, parsed by CliOptionProvider)
75 config_group->add_option(
76 "--tiles-edit-mode",
77 storage.tiles_edit_mode,
78 "Tiles Edit Mode - The allowed edit mode for the tiles.png artifact.")
79 ->type_name("{locked|patch|optimize}");
80
81 // Palettes Edit Mode (enum ArtifactEditMode, captured as string, parsed by CliOptionProvider)
82 config_group->add_option(
83 "--pals-edit-mode",
84 storage.pals_edit_mode,
85 "Palettes Edit Mode - The allowed edit mode for the palettes/ artifacts.")
86 ->type_name("{locked|patch|optimize}");
87
88 // Palette Hints Enabled (bool with --flag/--no-flag, captured as "true"/"false" string)
89 config_group->add_flag(
90 "--pal-hints-enabled,!--no-pal-hints-enabled",
91 [&storage](std::int64_t count) {
92 if (count > 0) {
93 storage.pal_hints_enabled = "true";
94 }
95 else if (count < 0) {
96 storage.pal_hints_enabled = "false";
97 }
98 // count == 0 means neither flag was provided, leave optional empty
99 },
100 "Palette Hints Enabled - Enable configured palette hints.");
101
102 // Packing Strategy (enum PackingStrategyType, captured as string, parsed by CliOptionProvider)
103 config_group->add_option(
104 "--packing-strategy",
105 storage.packing_strategy,
106 "Packing Strategy - The palette packing algorithm to use during compilation.")
107 ->type_name("{best-fusion|backtracking|overload-and-remove}");
108
109 // Tile Sharing Packing (enum TileSharingPacking, captured as string, parsed by CliOptionProvider)
110 config_group->add_option(
111 "--tile-sharing-packing",
112 storage.tile_sharing_packing,
113 "Tile Sharing Packing - Controls whether palette packing considers tile sharing.")
114 ->type_name("{off|biased|optimal}");
115
116 // Tile Sharing Alignment (enum TileSharingAlignment, captured as string, parsed by CliOptionProvider)
117 config_group->add_option(
118 "--tile-sharing-alignment",
120 "Tile Sharing Alignment - Controls palette slot alignment strategy for tile sharing.")
121 ->type_name("{off|greedy|optimal}");
122
123 // Tiles Palette Mode (enum TilesPalMode, captured as string, parsed by CliOptionProvider)
124 config_group->add_option(
125 "--tiles-pal-mode",
126 storage.tiles_pal_mode,
127 "Tiles Palette Mode - The color mode to use when saving the tiles.png artifact.")
128 ->type_name("{true-color|greyscale}");
129
130 // Global Animation Palette Resolution Strategy (enum AnimPalResolutionStrategy, captured as string, parsed by CliOptionProvider)
131 config_group->add_option(
132 "--anim-pal-resolution-strategy",
134 "Global Animation Palette Resolution Strategy - The global strategy for determining which palette to use when decompiling animation tiles.")
135 ->type_name("{scan-local-metatiles|palette-00|palette-01|palette-02|palette-03|palette-04|palette-05|palette-06|palette-07|palette-08|palette-09|palette-10|palette-11|palette-12|palette-13|palette-14|palette-15|internal-png-pal|scan-all-tilesets}");
136
137 // Global Animation Key Frame Resolution Strategy (enum AnimKeyFrameResolutionStrategy, captured as string, parsed by CliOptionProvider)
138 config_group->add_option(
139 "--anim-key-frame-resolution-strategy",
141 "Global Animation Key Frame Resolution Strategy - The strategy to use when decompilation encounters duplicate key frame subtiles.")
142 ->type_name("{error|warning|mangle}");
143
144 // Global Animation Multi-Pal Subtile Resolution Strategy (enum AnimMultiPalSubtileResolutionStrategy, captured as string, parsed by CliOptionProvider)
145 config_group->add_option(
146 "--anim-multi-pal-subtile-resolution-strategy",
148 "Global Animation Multi-Pal Subtile Resolution Strategy - The strategy for handling animation subtiles referenced with multiple palettes.")
149 ->type_name("{error|warning|split}");
150
151 // Global Frame Linking (enum FrameLinking, captured as string, parsed by CliOptionProvider)
152 config_group->add_option(
153 "--frame-linking",
154 storage.global_frame_linking,
155 "Global Frame Linking - The global default frame linking mode for animations.")
156 ->type_name("{automatic|manual|hybrid}");
157
158 // Cross-Tileset Animation Linking (bool with --flag/--no-flag, captured as "true"/"false" string)
159 config_group->add_flag(
160 "--cross-tileset-anim-linking,!--no-cross-tileset-anim-linking",
161 [&storage](std::int64_t count) {
162 if (count > 0) {
163 storage.cross_tileset_anim_linking = "true";
164 }
165 else if (count < 0) {
166 storage.cross_tileset_anim_linking = "false";
167 }
168 // count == 0 means neither flag was provided, leave optional empty
169 },
170 "Cross-Tileset Animation Linking - Enable automatic matching of secondary tiles against primary animation key frames.");
171
172 // Verify Checksums (bool with --flag/--no-flag, captured as "true"/"false" string)
173 config_group->add_flag(
174 "--verify-checksums,!--no-verify-checksums",
175 [&storage](std::int64_t count) {
176 if (count > 0) {
177 storage.verify_checksums = "true";
178 }
179 else if (count < 0) {
180 storage.verify_checksums = "false";
181 }
182 // count == 0 means neither flag was provided, leave optional empty
183 },
184 "Verify Checksums - Enable or disable artifact checksum verification.");
185
186 // Primary Pairing Mode (enum PrimaryPairingMode, captured as string, parsed by CliOptionProvider)
187 config_group->add_option(
188 "--primary-pairing-mode",
189 storage.primary_pairing_mode,
190 "Primary Pairing Mode - How a secondary tileset resolves its partner primary for compilation.")
191 ->type_name("{off|manual|automatic}");
192
193 // Primary Pairing Partners (std::vector<std::string>, multi-value)
194 config_group->add_option(
195 "--primary-pairing-partners",
197 "Primary Pairing Partners - Tileset names to use as partner primaries in manual pairing mode.");
198
199 // Diagnostic Warnings Exclude (std::vector<std::string>, multi-value)
200 config_group->add_option(
201 "--diagnostic-warnings-exclude",
203 "Diagnostic Warnings Exclude - Regex patterns for warning tags to exclude.");
204
205 // Diagnostic Warnings Include (std::vector<std::string>, multi-value)
206 config_group->add_option(
207 "--diagnostic-warnings-include",
209 "Diagnostic Warnings Include - Regex patterns for warning tags to include (overrides excludes).");
210
211 // Diagnostic Remarks Exclude (std::vector<std::string>, multi-value)
212 config_group->add_option(
213 "--diagnostic-remarks-exclude",
215 "Diagnostic Remarks Exclude - Regex patterns for remark tags to exclude.");
216
217 // Diagnostic Remarks Include (std::vector<std::string>, multi-value)
218 config_group->add_option(
219 "--diagnostic-remarks-include",
221 "Diagnostic Remarks Include - Regex patterns for remark tags to include (overrides excludes).");
222
223 // Tileset Paths Primary Source (std::string)
224 config_group->add_option(
225 "--tileset-paths-primary-src",
227 "Tileset Paths Primary Source - The directory for primary tileset Porytiles component assets.");
228
229 // Tileset Paths Primary Bin (std::string)
230 config_group->add_option(
231 "--tileset-paths-primary-bin",
233 "Tileset Paths Primary Bin - The directory for primary tileset Porymap component assets.");
234
235 // Tileset Paths Secondary Source (std::string)
236 config_group->add_option(
237 "--tileset-paths-secondary-src",
239 "Tileset Paths Secondary Source - The directory for secondary tileset Porytiles component assets.");
240
241 // Tileset Paths Secondary Bin (std::string)
242 config_group->add_option(
243 "--tileset-paths-secondary-bin",
245 "Tileset Paths Secondary Bin - The directory for secondary tileset Porymap component assets.");
246
247 // Metatile Attribute Size (std::size_t, captured as string, parsed by CliOptionProvider)
248 config_group->add_option(
249 "--metatile-attr-size",
250 storage.metatile_attr_size,
251 "Metatile Attribute Size - The size in bytes of each metatile attribute entry (2 for Emerald/Ruby, 4 for FireRed).");
252
253 // Tileset Animations Wire Anim Code (bool with --flag/--no-flag, captured as "true"/"false" string)
254 config_group->add_flag(
255 "--tileset-animations-wire-anim-code,!--no-tileset-animations-wire-anim-code",
256 [&storage](std::int64_t count) {
257 if (count > 0) {
258 storage.tileset_animations_wire_anim_code = "true";
259 }
260 else if (count < 0) {
261 storage.tileset_animations_wire_anim_code = "false";
262 }
263 // count == 0 means neither flag was provided, leave optional empty
264 },
265 "Tileset Animations Wire Anim Code - Enable or disable automatic animation code wiring.");
266
267}
268
269} // namespace porytiles
void register_config_options(CLI::App &app, CliOptionStorage &storage)
Registers all config options with a CLI11 App.
Storage struct for CLI option values.
std::optional< std::string > num_pals_in_primary
std::vector< std::string > diagnostic_remarks_include
std::optional< std::string > num_metatiles_in_primary
std::optional< std::string > num_pals_total
std::optional< std::string > tileset_paths_primary_bin
std::optional< std::string > packing_strategy
std::optional< std::string > cross_tileset_anim_linking
std::optional< std::string > tiles_edit_mode
std::optional< std::string > pals_edit_mode
std::optional< std::string > num_tiles_total
std::optional< std::string > tileset_paths_secondary_bin
std::optional< std::string > tileset_animations_wire_anim_code
std::optional< std::string > num_tiles_per_metatile
std::optional< std::string > max_map_data_size
std::optional< std::string > tileset_paths_primary_src
std::optional< std::string > tiles_pal_mode
std::optional< std::string > tileset_paths_secondary_src
std::optional< std::string > tile_sharing_packing
std::optional< std::string > num_tiles_in_primary
std::optional< std::string > pal_hints_enabled
std::vector< std::string > diagnostic_warnings_include
std::optional< std::string > global_frame_linking
std::optional< std::string > metatile_attr_size
std::optional< std::string > global_anim_multi_pal_subtile_resolution_strategy
std::optional< std::string > global_anim_key_frame_resolution_strategy
std::vector< std::string > diagnostic_remarks_exclude
std::optional< std::string > num_metatiles_total
std::optional< std::string > extrinsic_transparency
std::vector< std::string > diagnostic_warnings_exclude
std::optional< std::string > tile_sharing_alignment
std::optional< std::string > primary_pairing_mode
std::optional< std::string > global_anim_pal_resolution_strategy
std::optional< std::string > verify_checksums
std::vector< std::string > primary_pairing_partners