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

Closes the JSON round-trip gap on the LFG dungeon catalog
format shipped this batch. --export-wlfg-json emits all 13
scalar fields plus dual int + name forms for difficulty
(4 values) and expansionRequired (4 values) so hand-edits
can use either representation. --import-wlfg-json defaults
groupSize to 5 (dungeon) and requiredRolesMask to kRoleAll
(all three role types) when omitted — matches the typical
queue setup for cross-realm dungeon finder. Verified
byte-identical round-trip on all three preset emitters
(starter classic dungeons / heroic 5-mans / 25-man raids).
813 documented CLI flags.
This commit is contained in:
Kelsi 2026-05-09 20:25:30 -07:00
parent 385cdd7dc9
commit b8e039f834
3 changed files with 171 additions and 0 deletions

View file

@ -1539,6 +1539,10 @@ void printUsage(const char* argv0) {
std::printf(" Print WLFG entries (id / map / level range / minIlvl / difficulty / groupSize / role mask / expansion / rewards / name)\n");
std::printf(" --validate-wlfg <wlfg-base> [--json]\n");
std::printf(" Static checks: id+name+mapId required, difficulty 0..3 / expansion 0..3, minLevel<=maxLevel, recommended within range, role mask>0\n");
std::printf(" --export-wlfg-json <wlfg-base> [out.json]\n");
std::printf(" Export binary .wlfg to a human-editable JSON sidecar (defaults to <base>.wlfg.json)\n");
std::printf(" --import-wlfg-json <json-path> [out-base]\n");
std::printf(" Import a .wlfg.json sidecar back into binary .wlfg (accepts difficulty/expansion int OR name string; groupSize defaults to 5, role mask to kRoleAll)\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");