summaryrefslogtreecommitdiffhomepage
path: root/serialize
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2024-01-16 07:59:59 +0100
committerStanislaw Halik <sthalik@misaki.pl>2024-01-16 07:59:59 +0100
commit07716595e0c26ba6d19ee6c498280508ca5aa6c2 (patch)
treeda22b4d88e63419a366c48037cbef14f8f43a2b4 /serialize
parentae53b814c310d1996db0b818151ef7b205d03b7b (diff)
a
Diffstat (limited to 'serialize')
-rw-r--r--serialize/anim.cpp6
-rw-r--r--serialize/corrade-array.hpp28
-rw-r--r--serialize/world-reader.cpp1
3 files changed, 34 insertions, 1 deletions
diff --git a/serialize/anim.cpp b/serialize/anim.cpp
index 443fc34b..4b5dee77 100644
--- a/serialize/anim.cpp
+++ b/serialize/anim.cpp
@@ -1,7 +1,10 @@
#include "serialize/magnum-vector.hpp"
#include "serialize/corrade-string.hpp"
#include "serialize/anim.hpp"
+#include "serialize/corrade-array.hpp"
#include "compat/exception.hpp"
+#include <Corrade/Containers/Array.h>
+#include <Corrade/Containers/ArrayViewStl.h>
#include <nlohmann/json.hpp>
#include <tuple>
@@ -115,8 +118,9 @@ static void from_json(const json& j, anim_def& val)
val.action_frame2 = j["action-frame-2"];
if (j.contains("fps"))
val.fps = j["fps"];
+
val.groups = j["groups"];
- fm_soft_assert(!val.groups.empty());
+ fm_soft_assert(!val.groups.isEmpty());
val.scale = j["scale"];
fm_soft_assert(val.scale.type != anim_scale_type::invalid);
}
diff --git a/serialize/corrade-array.hpp b/serialize/corrade-array.hpp
new file mode 100644
index 00000000..ea450870
--- /dev/null
+++ b/serialize/corrade-array.hpp
@@ -0,0 +1,28 @@
+#pragma once
+#include "compat/exception.hpp"
+#include <Corrade/Containers/Array.h>
+#include <nlohmann/json.hpp>
+
+namespace nlohmann {
+
+template<typename T, typename D>
+struct adl_serializer<Corrade::Containers::Array<T, D>>
+{
+ static void to_json(json& j, const Corrade::Containers::Array<T, D>& array)
+ {
+ j.clear();
+ for (const T& x : array)
+ j.push_back(x);
+ }
+
+ static void from_json(const json& j, Corrade::Containers::Array<T>& array)
+ {
+ fm_soft_assert(j.is_array());
+ auto size = (uint32_t)j.size();
+ array = Corrade::Containers::Array<T>{size};
+ for (uint32_t i = 0; i < size; i++)
+ array[i] = j[i];
+ }
+};
+
+} // namespace nlohmann
diff --git a/serialize/world-reader.cpp b/serialize/world-reader.cpp
index 6bfcaa47..366648d5 100644
--- a/serialize/world-reader.cpp
+++ b/serialize/world-reader.cpp
@@ -14,6 +14,7 @@
#include <cerrno>
#include <cstring>
#include <memory>
+#include <vector>
namespace {