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

Closes the JSON round-trip gap on the unit movement catalog
format shipped this batch. --export-wumv-json emits all 11
scalar fields plus a dual int + name form for
movementCategory (12 values) so hand-edits can use either
representation. --import-wumv-json defaults baseMultiplier
to 1.0 and maxMultiplier to 1.4 (canonical Sprint cap)
when omitted. Verified byte-identical round-trip on all
three preset emitters (starter / flight / buffs). 877
documented CLI flags.
This commit is contained in:
Kelsi 2026-05-09 21:20:13 -07:00
parent 1ca665150b
commit 50050285af
3 changed files with 145 additions and 0 deletions

View file

@ -1667,6 +1667,10 @@ void printUsage(const char* argv0) {
std::printf(" Print WUMV entries (id / category / baseSpeed / multipliers / duration / priority / flight+stack flags / name)\n");
std::printf(" --validate-wumv <wumv-base> [--json]\n");
std::printf(" Static checks: id+name required, category 0..11, baseMultiplier > 0, max >= base, baseline categories need baseSpeed > 0\n");
std::printf(" --export-wumv-json <wumv-base> [out.json]\n");
std::printf(" Export binary .wumv to a human-editable JSON sidecar (defaults to <base>.wumv.json)\n");
std::printf(" --import-wumv-json <json-path> [out-base]\n");
std::printf(" Import a .wumv.json sidecar back into binary .wumv (accepts movementCategory int OR name string; multipliers default to 1.0/1.4)\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");