diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2024-01-16 07:59:59 +0100 |
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2024-01-16 07:59:59 +0100 |
| commit | 07716595e0c26ba6d19ee6c498280508ca5aa6c2 (patch) | |
| tree | da22b4d88e63419a366c48037cbef14f8f43a2b4 /serialize | |
| parent | ae53b814c310d1996db0b818151ef7b205d03b7b (diff) | |
a
Diffstat (limited to 'serialize')
| -rw-r--r-- | serialize/anim.cpp | 6 | ||||
| -rw-r--r-- | serialize/corrade-array.hpp | 28 | ||||
| -rw-r--r-- | serialize/world-reader.cpp | 1 |
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 { |
