summaryrefslogtreecommitdiffhomepage
path: root/serialize/ground-atlas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'serialize/ground-atlas.cpp')
-rw-r--r--serialize/ground-atlas.cpp50
1 files changed, 15 insertions, 35 deletions
diff --git a/serialize/ground-atlas.cpp b/serialize/ground-atlas.cpp
index 76c8686e..8703881d 100644
--- a/serialize/ground-atlas.cpp
+++ b/serialize/ground-atlas.cpp
@@ -1,58 +1,38 @@
+#include "ground-atlas.hpp"
#include "src/ground-atlas.hpp"
-#include "serialize/ground-atlas.hpp"
#include "serialize/corrade-string.hpp"
#include "serialize/magnum-vector.hpp"
#include "loader/loader.hpp"
#include "serialize/pass-mode.hpp"
#include "compat/exception.hpp"
+#include <tuple>
#include <Corrade/Containers/Optional.h>
#include <Corrade/Containers/String.h>
#include <nlohmann/json.hpp>
-using namespace floormat;
-
-namespace {
+namespace floormat {
-struct proxy {
- StringView name;
- Vector2ub size;
- pass_mode passability;
-};
+} // namespace floormat
-NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(proxy, name, size)
-
-} // namespace
+using namespace floormat;
namespace nlohmann {
-void adl_serializer<std::shared_ptr<ground_atlas>>::to_json(json& j, const std::shared_ptr<const ground_atlas>& x)
+#if 0
+void adl_serializer<ground_info>::to_json(json& j, const ground_info& x)
{
using nlohmann::to_json;
- if (!x)
- j = nullptr;
- else
- to_json(j, proxy{x->name(), x->num_tiles2(), x->pass_mode()});
+ j = std::tuple<StringView, Vector2ub, pass_mode>{x.name, x.size, x.pass};
}
+#endif
-void adl_serializer<std::shared_ptr<ground_atlas>>::from_json(const json& j, std::shared_ptr<ground_atlas>& val)
+void adl_serializer<ground_info>::from_json(const json& j, ground_info& val)
{
- if (j.is_null())
- val = nullptr;
- else
- {
- using nlohmann::from_json;
- proxy x;
- from_json(j, x);
- pass_mode p = ground_atlas::default_pass_mode;
- if (j.contains("pass-mode"))
- p = j["pass-mode"];
- val = loader.ground_atlas(x.name, x.size, p);
- if (auto p2 = val->pass_mode(); p2 != p)
- {
- const auto name = val->name();
- fm_throw("atlas {} wrong pass mode {} should be {}"_cf, name, uint8_t(p2), uint8_t(p));
- }
- }
+ using nlohmann::from_json;
+ val.name = j["name"];
+ val.size = j["size"];
+ if (j.contains("pass-mode"))
+ val.pass = j["pass-mode"];
}
} // namespace nlohmann