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

Closes the JSON round-trip gap on the holiday catalog format
shipped last batch. --export-whol-json emits all 13 scalar
fields plus dual int + name forms for holidayKind and
recurrence so hand-edits can use either representation.
--import-whol-json accepts either form, falling back to the
int when both are present. Verified byte-identical round-trip
on all three preset emitters (starter / weekly / special).
709 documented CLI flags.
This commit is contained in:
Kelsi 2026-05-09 19:07:08 -07:00
parent 2666b976c9
commit 0c732a9133
3 changed files with 161 additions and 0 deletions

View file

@ -1329,6 +1329,10 @@ void printUsage(const char* argv0) {
std::printf(" Print WHOL entries (id / kind / recurrence / start MM/DD / duration / quest+boss+reward IDs / name)\n");
std::printf(" --validate-whol <whol-base> [--json]\n");
std::printf(" Static checks: id>0+unique, kind 0..5, recurrence 0..3, duration>0, valid month/day for non-weekly, calendar-only warning\n");
std::printf(" --export-whol-json <whol-base> [out.json]\n");
std::printf(" Export binary .whol to a human-editable JSON sidecar (defaults to <base>.whol.json)\n");
std::printf(" --import-whol-json <json-path> [out-base]\n");
std::printf(" Import a .whol.json sidecar back into binary .whol (accepts holidayKind/recurrence 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");