summaryrefslogtreecommitdiffhomepage
path: root/loader/wall-cell.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'loader/wall-cell.cpp')
-rw-r--r--loader/wall-cell.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/loader/wall-cell.cpp b/loader/wall-cell.cpp
new file mode 100644
index 00000000..99ba2fcc
--- /dev/null
+++ b/loader/wall-cell.cpp
@@ -0,0 +1,36 @@
+#include "wall-cell.hpp"
+#include "compat/vector-wrapper.hpp"
+#include "compat/exception.hpp"
+#include "serialize/json-helper.hpp"
+#include "serialize/corrade-string.hpp"
+#include "loader/loader.hpp"
+
+namespace floormat {
+
+using nlohmann::json;
+
+[[maybe_unused]] static void from_json(const json& j, wall_cell& val)
+{
+ val = {};
+ val.name = j["name"];
+ fm_soft_assert(loader.check_atlas_name(val.name));
+}
+
+[[maybe_unused]] static void to_json(json& j, const wall_cell& val)
+{
+ j["name"] = val.name;
+}
+
+vector_wrapper<const wall_cell> wall_cell::load_atlases_from_json()
+{
+ char buf[fm_FILENAME_MAX];
+ auto s = loader.make_atlas_path(buf, loader.WALL_TILESET_PATH, "walls.json"_s);
+
+ return { json_helper::from_json<std::vector<wall_cell>>(s) };
+}
+
+} // namespace floormat
+
+namespace floormat::loader_detail {
+
+} // namespace floormat::loader_detail