From a5c6ca806b2bde216effbea7cd5d964b3f235b5f Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 22 Nov 2023 13:41:14 +0100 Subject: a --- loader/wall-atlas.cpp | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'loader/wall-atlas.cpp') diff --git a/loader/wall-atlas.cpp b/loader/wall-atlas.cpp index 1784f4e2..57b89ded 100644 --- a/loader/wall-atlas.cpp +++ b/loader/wall-atlas.cpp @@ -16,7 +16,25 @@ #include namespace floormat { -NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(wall_info, name, descr) + +using nlohmann::json; + +static void from_json(const json& j, wall_info& val) +{ + val = {}; + val.name = j["name"]; + fm_soft_assert(loader.check_atlas_name(val.name)); + if (j.contains("descr")) + val.descr = j["descr"]; +} + +static void to_json(json& j, const wall_info& val) +{ + j["name"] = val.name; + if (val.descr) + j["descr"] = val.descr; +} + } // namespace floormat namespace floormat::loader_detail { @@ -41,9 +59,7 @@ const wall_info& loader_impl::wall_atlas(StringView name, StringView dir) fm_throw("no such wall atlas '{}'"_cf, path); fm_assert(it->second != nullptr); if (!it->second->atlas) - { - const_cast(it->second)->atlas = get_wall_atlas(it->second->name, path); - } + it->second->atlas = get_wall_atlas(it->second->name, path); return *it->second; } @@ -54,7 +70,7 @@ void loader_impl::get_wall_atlas_list() wall_atlas_map.clear(); wall_atlas_map.reserve(wall_atlas_array.size()*2); - for (const auto& x : wall_atlas_array) + for (auto& x : wall_atlas_array) { fm_soft_assert(check_atlas_name(x.name)); StringView name = x.name; -- cgit v1.2.3