summaryrefslogtreecommitdiffhomepage
path: root/serialize/wall-atlas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'serialize/wall-atlas.cpp')
-rw-r--r--serialize/wall-atlas.cpp24
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);