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

Closes the JSON round-trip gap on the loading screen catalog
format shipped last batch. --export-wlds-json emits all 11
scalar fields plus a dual int + name form for
expansionRequired so hand-edits can use either representation.
--import-wlds-json accepts either form, defaulting minLevel
to 1 and maxLevel to 80 when omitted (full level range).
Verified byte-identical round-trip on all three preset
emitters (starter / WotLK instances / raid intros with
isWideAspect=1). 856 documented CLI flags.
This commit is contained in:
Kelsi 2026-05-09 21:01:53 -07:00
parent 07137acc89
commit b1967c4453
3 changed files with 142 additions and 0 deletions

View file

@ -1625,6 +1625,10 @@ void printUsage(const char* argv0) {
std::printf(" Print WLDS entries (id / mapId / level range / display weight / expansion / animated+wide flags / name)\n");
std::printf(" --validate-wlds <wlds-base> [--json]\n");
std::printf(" Static checks: id+name+texture required, expansion 0..3, level range valid, weight=0 warning, catch-all overlap\n");
std::printf(" --export-wlds-json <wlds-base> [out.json]\n");
std::printf(" Export binary .wlds to a human-editable JSON sidecar (defaults to <base>.wlds.json)\n");
std::printf(" --import-wlds-json <json-path> [out-base]\n");
std::printf(" Import a .wlds.json sidecar back into binary .wlds (accepts expansionRequired 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");