feat(editor): add WCHF JSON round-trip (export/import sidecar)

Closes the JSON round-trip gap on the character customization
feature catalog format shipped last batch. --export-wchf-json
emits all 9 scalar fields plus dual int + name forms for
featureKind (9 values) / sexId (2 values) /
requiresExpansion (4 values) so hand-edits can use either
representation. --import-wchf-json accepts either form.
Verified byte-identical round-trip on all three preset
emitters (starter Human Male / Blood Elf Female hair / Tauren
Male horns + facial hair). 828 documented CLI flags.
This commit is contained in:
Kelsi 2026-05-09 20:37:01 -07:00
parent 243d7f4416
commit 5f07e74fc5
3 changed files with 171 additions and 0 deletions

View file

@ -1569,6 +1569,10 @@ void printUsage(const char* argv0) {
std::printf(" Print WCHF entries (id / race / sex / kind / variation / geoset bits / expansion / name)\n");
std::printf(" --validate-wchf <wchf-base> [--json]\n");
std::printf(" Static checks: id+name+raceId+texturePath required, kind 0..8 / sex 0..1 / expansion 0..3, unique (race,sex,kind,variation) tuples\n");
std::printf(" --export-wchf-json <wchf-base> [out.json]\n");
std::printf(" Export binary .wchf to a human-editable JSON sidecar (defaults to <base>.wchf.json)\n");
std::printf(" --import-wchf-json <json-path> [out-base]\n");
std::printf(" Import a .wchf.json sidecar back into binary .wchf (accepts featureKind/sexId/requiresExpansion int OR name string)\n");
std::printf(" --gen-weather-temperate <wow-base> [zoneName]\n");
std::printf(" Emit .wow weather schedule: clear-dominant + occasional rain + fog (forest / grassland)\n");
std::printf(" --gen-weather-arctic <wow-base> [zoneName]\n");