diff options
Diffstat (limited to 'loader')
-rw-r--r-- | loader/ground-cell.cpp | 18 | ||||
-rw-r--r-- | loader/ground-cell.hpp | 7 | ||||
-rw-r--r-- | loader/ground-traits.cpp | 15 |
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()); |