diff options
Diffstat (limited to 'serialize/wall-atlas.cpp')
-rw-r--r-- | serialize/wall-atlas.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/serialize/wall-atlas.cpp b/serialize/wall-atlas.cpp index 6f29026d..e2e6eee8 100644 --- a/serialize/wall-atlas.cpp +++ b/serialize/wall-atlas.cpp @@ -101,14 +101,28 @@ Info read_info_header(const json& jroot) return val; } +void write_direction_metadata(json& jroot, const Direction& dir, Direction_ i) +{ + auto name = std::string_view{direction_index_to_name((size_t)i)}; + auto j = json{json::value_t::object}; + fm_assert(!jroot.contains(name)); + + for (auto [s_, memfn, tag] : Direction::members) + { + std::string_view s = s_; + const auto& group = dir.*memfn; + write_group_metadata(j[s], group); + } + + jroot[name] = std::move(j); +} + void write_group_metadata(json& jgroup, const Group& val) { - fm_soft_assert(jgroup.is_object()); - fm_soft_assert(jgroup.empty()); + fm_assert(jgroup.is_object()); + fm_assert(jgroup.empty()); - //jgroup[""s] = ; - if (val.index != none) - jgroup["index"s] = val.index; + jgroup["index"s] = val.index; jgroup["count"s] = val.count; jgroup["pixel-size"s] = val.pixel_size; jgroup["tint-mult"s] = Vector4(val.tint_mult); |