diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2022-10-21 21:42:38 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-10-21 21:43:21 +0200 |
commit | 087f5021200e6c80bfdc1f039a47a1d6240d0a87 (patch) | |
tree | fa3cb5961e2e2e303e929f1213f76a9c3ffebb06 /serialize/world.cpp | |
parent | 0f6de650e81d196d32c143c05e33cf538673b401 (diff) |
serialize world
Diffstat (limited to 'serialize/world.cpp')
-rw-r--r-- | serialize/world.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/serialize/world.cpp b/serialize/world.cpp new file mode 100644 index 00000000..b52fe3b9 --- /dev/null +++ b/serialize/world.cpp @@ -0,0 +1,29 @@ +#include "world.hpp" +#include "tile.hpp" +#include "global-coords.hpp" +#include <nlohmann/json.hpp> + +namespace floormat { + +NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(chunk_coords, x, y) + +struct global_coords_ final { + chunk_coords chunk; + local_coords local; +}; + +NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(global_coords_, chunk, local) + +} // namespace floormat + +namespace nlohmann { + +using namespace floormat; + +void adl_serializer<chunk_coords>::to_json(json& j, const chunk_coords& val) { using nlohmann::to_json; to_json(j, val); } +void adl_serializer<chunk_coords>::from_json(const json& j, chunk_coords& val) { using nlohmann::from_json; from_json(j, val); } + +void adl_serializer<global_coords>::to_json(json& j, const global_coords& val) { using nlohmann::to_json; to_json(j, global_coords_{val.chunk(), val.local()}); } +void adl_serializer<global_coords>::from_json(const json& j, global_coords& val) { using nlohmann::from_json; global_coords_ x; from_json(j, x); val = {x.chunk, x.local}; } + +} // namespace nlohmann |