feat(editor): add WSND JSON round-trip authoring workflow

Closes the WSND open-format loop with --export-wsnd-json /
--import-wsnd-json, mirroring the WOL/WOW/WOMX JSON pairs
from earlier batches.

Each entry round-trips all 9 fields:
  soundId, kind (int + kindName string), flags (int +
  flagsList string array), volume, minDistance, maxDistance,
  filePath, label.

Both kind and flags are emitted in dual form (int + named):
  • kind     : 2,
    kindName : "ambient",
  • flags    : 3,
    flagsList: ["loop", "3d"]

The importer accepts either form per field, so a hand-author
can write only the named string forms and skip the integer
boilerplate. Missing optional fields fall back to
WoweeSound::Entry defaults.

Verified byte-identical round-trip on the tavern preset
(5 entries with mixed flags and 3D distances).

Adds 2 flags (467 kArgRequired entries total). All 4 binary
formats added in recent batches now have full JSON round-trip:
WOL, WOW, WOMX, WSND.
This commit is contained in:
Kelsi 2026-05-09 14:51:44 -07:00
parent ec569768fe
commit 40a0194e18
3 changed files with 156 additions and 0 deletions

View file

@ -28,6 +28,7 @@ const char* const kArgRequired[] = {
"--gen-sound-catalog", "--gen-sound-catalog-ambient",
"--gen-sound-catalog-tavern",
"--info-wsnd", "--validate-wsnd",
"--export-wsnd-json", "--import-wsnd-json",
"--gen-weather-temperate", "--gen-weather-arctic",
"--gen-weather-desert", "--gen-weather-stormy",
"--gen-zone-atmosphere",