summaryrefslogtreecommitdiffhomepage
path: root/loader
diff options
context:
space:
mode:
Diffstat (limited to 'loader')
-rw-r--r--loader/ground-cell.cpp18
-rw-r--r--loader/ground-cell.hpp7
-rw-r--r--loader/ground-traits.cpp15
3 files changed, 27 insertions, 13 deletions
diff --git a/loader/ground-cell.cpp b/loader/ground-cell.cpp
new file mode 100644
index 00000000..8cc1e31d
--- /dev/null
+++ b/loader/ground-cell.cpp
@@ -0,0 +1,18 @@
+#include "ground-cell.hpp"
+#include "compat/vector-wrapper.hpp"
+#include "loader/loader.hpp"
+#include "serialize/json-helper.hpp"
+//#include "serialize/corrade-string.hpp"
+#include "serialize/ground-atlas.hpp"
+
+namespace floormat {
+
+vector_wrapper<const ground_cell> ground_cell::load_atlases_from_json()
+{
+ char buf[fm_FILENAME_MAX];
+ auto s = loader.make_atlas_path(buf, loader.GROUND_TILESET_PATH, "ground.json"_s);
+ auto cells = json_helper::from_json<std::vector<ground_cell>>(s);
+ return {cells};
+}
+
+} // namespace floormat
diff --git a/loader/ground-cell.hpp b/loader/ground-cell.hpp
index 260301c2..0e1e51be 100644
--- a/loader/ground-cell.hpp
+++ b/loader/ground-cell.hpp
@@ -1,6 +1,9 @@
#pragma once
-#include "src/ground-def.hpp"
+#include "compat/vector-wrapper-fwd.hpp"
+#include "src/pass-mode.hpp"
#include <memory>
+#include <Corrade/Containers/String.h>
+#include <Magnum/Math/Vector2.h>
namespace floormat {
@@ -12,6 +15,8 @@ struct ground_cell
String name;
Vector2ub size;
pass_mode pass = pass_mode::pass;
+
+ static vector_wrapper<const ground_cell> load_atlases_from_json();
};
} // namespace floormat
diff --git a/loader/ground-traits.cpp b/loader/ground-traits.cpp
index e1fd5e70..5cb8d29e 100644
--- a/loader/ground-traits.cpp
+++ b/loader/ground-traits.cpp
@@ -1,16 +1,14 @@
#include "ground-traits.hpp"
#include "compat/assert.hpp"
#include "compat/exception.hpp"
-#include "atlas-loader.hpp"
+#include "compat/vector-wrapper.hpp"
#include "atlas-loader-storage.hpp"
#include "ground-cell.hpp"
#include "loader.hpp"
#include "src/tile-defs.hpp"
-#include "serialize/json-helper.hpp"
-#include "serialize/ground-atlas.hpp"
+#include "src/ground-atlas.hpp"
#include <Corrade/Containers/StringView.h>
#include <Corrade/Containers/Pointer.h>
-#include <Corrade/Utility/Path.h>
#include <Magnum/ImageView.h>
#include <Magnum/Trade/ImageData.h>
@@ -32,14 +30,7 @@ void traits::ensure_atlases_loaded(Storage& st)
fm_assert(st.cell_array.empty());
fm_assert(st.name_map.empty());
- auto defs = json_helper::from_json<std::vector<ground_def>>(Path::join(loader_::GROUND_TILESET_PATH, "ground.json"_s));
- std::vector<ground_cell> infos;
- infos.reserve(defs.size());
-
- for (auto& x : defs)
- infos.push_back(ground_cell{{}, std::move(x.name), x.size, x.pass});
-
- st.cell_array = Utility::move(infos);
+ st.cell_array = ground_cell::load_atlases_from_json().vec;
fm_assert(!st.cell_array.empty());
fm_assert(st.name_map.empty());