From efecf0ab20304b5d76b3072a66b36b50d8522082 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 27 Nov 2022 21:39:41 +0100 Subject: scenery wip --- serialize/scenery.cpp | 22 ++++++++++++++++++---- serialize/scenery.hpp | 9 ++++----- 2 files changed, 22 insertions(+), 9 deletions(-) (limited to 'serialize') diff --git a/serialize/scenery.cpp b/serialize/scenery.cpp index 8bff3d69..984b11bc 100644 --- a/serialize/scenery.cpp +++ b/serialize/scenery.cpp @@ -3,6 +3,7 @@ #include "compat/assert.hpp" #include "loader/loader.hpp" #include "serialize/corrade-string.hpp" +#include "serialize/json-helper.hpp" #include #include #include @@ -10,6 +11,7 @@ namespace { using namespace floormat; +using namespace floormat::Serialize; constexpr struct { scenery_type value = scenery_type::none; @@ -55,10 +57,6 @@ StringView foo_to_string(auto type, const T(&map)[N], const char* desc) } // namespace -namespace floormat { - -} // namespace floormat - namespace nlohmann { void adl_serializer::to_json(json& j, const scenery_type val) @@ -131,6 +129,22 @@ void adl_serializer::from_json(const json& j, scenery_proto& val) } } +void adl_serializer::to_json(json& j, const serialized_scenery& val) +{ + fm_assert(val.proto.atlas); + j = val.proto; + const auto name = !val.name.isEmpty() ? StringView{val.name} : val.proto.atlas->name(); + j["name"] = name; + j["description"] = val.descr; +} +void adl_serializer::from_json(const json& j, serialized_scenery& val) +{ + val = {}; + val.proto = j; + val.name = j["name"]; + if (j.contains("description")) + val.descr = j["description"]; +} } // namespace nlohmann diff --git a/serialize/scenery.hpp b/serialize/scenery.hpp index 190a4d2a..e3eb977a 100644 --- a/serialize/scenery.hpp +++ b/serialize/scenery.hpp @@ -1,16 +1,15 @@ #pragma once #include "src/scenery.hpp" #include -#include +#include #include namespace floormat::Serialize { -struct serialized_scenery final { - StringView name, descr; +struct serialized_scenery final +{ + String name, descr; scenery_proto proto; - - static std::vector deserialize(StringView filename); }; } // namespace floormat::Serialize -- cgit v1.2.3