diff options
Diffstat (limited to 'loader')
-rw-r--r-- | loader/atlas.cpp | 4 | ||||
-rw-r--r-- | loader/impl.hpp | 2 | ||||
-rw-r--r-- | loader/json.cpp | 2 | ||||
-rw-r--r-- | loader/loader.cpp | 1 | ||||
-rw-r--r-- | loader/loader.hpp | 4 |
5 files changed, 8 insertions, 5 deletions
diff --git a/loader/atlas.cpp b/loader/atlas.cpp index f68ca820..584d6b5a 100644 --- a/loader/atlas.cpp +++ b/loader/atlas.cpp @@ -29,7 +29,7 @@ ArrayView<String> loader_impl::anim_atlas_list() return anim_atlases; } -std::shared_ptr<anim_atlas> loader_impl::anim_atlas(StringView name) +std::shared_ptr<anim_atlas> loader_impl::anim_atlas(StringView name, StringView dir) { fm_assert(check_atlas_name(name)); @@ -37,7 +37,7 @@ std::shared_ptr<anim_atlas> loader_impl::anim_atlas(StringView name) return it->second; else { - const auto path = Path::join(ANIM_PATH, Path::splitExtension(name).first()); + const auto path = Path::join(dir, Path::splitExtension(name).first()); auto anim_info = deserialize_anim(path + ".json"); for (anim_group& group : anim_info.groups) diff --git a/loader/impl.hpp b/loader/impl.hpp index 04b9733f..6a49269f 100644 --- a/loader/impl.hpp +++ b/loader/impl.hpp @@ -29,7 +29,7 @@ struct loader_impl final : loader_ Trade::ImageData2D texture(StringView prefix, StringView filename); std::shared_ptr<struct tile_atlas> tile_atlas(StringView filename, Vector2ub size) override; ArrayView<String> anim_atlas_list() override; - std::shared_ptr<struct anim_atlas> anim_atlas(StringView name) override; + std::shared_ptr<struct anim_atlas> anim_atlas(StringView name, StringView dir) override; void get_anim_atlas_list(); diff --git a/loader/json.cpp b/loader/json.cpp index 7ee661f7..1a698a38 100644 --- a/loader/json.cpp +++ b/loader/json.cpp @@ -23,7 +23,7 @@ std::vector<std::shared_ptr<struct tile_atlas>> loader_::tile_atlases(StringView std::vector<Serialize::serialized_scenery> loader_::sceneries() { - return json_helper::from_json<std::vector<Serialize::serialized_scenery>>(Path::join(ANIM_PATH, "scenery.json")); + return json_helper::from_json<std::vector<Serialize::serialized_scenery>>(Path::join(SCENERY_PATH, "scenery.json")); } } // namespace floormat diff --git a/loader/loader.cpp b/loader/loader.cpp index a2fcd161..a07f96be 100644 --- a/loader/loader.cpp +++ b/loader/loader.cpp @@ -24,5 +24,6 @@ loader_::~loader_() = default; const StringView loader_::IMAGE_PATH = "share/floormat/images/"_s; const StringView loader_::ANIM_PATH = "share/floormat/anim/"_s; +const StringView loader_::SCENERY_PATH = "share/floormat/scenery/"_s; } // namespace floormat diff --git a/loader/loader.hpp b/loader/loader.hpp index b8ac12e2..93ac5654 100644 --- a/loader/loader.hpp +++ b/loader/loader.hpp @@ -1,6 +1,7 @@ #pragma once #include <memory> #include <vector> +#include <Corrade/Containers/StringView.h> namespace Magnum { using Vector2ub = Math::Vector2<unsigned char>; } namespace floormat::Serialize { struct serialized_scenery; } @@ -16,7 +17,7 @@ struct loader_ virtual StringView shader(StringView filename) = 0; virtual std::shared_ptr<struct tile_atlas> tile_atlas(StringView filename, Vector2ub size) = 0; virtual ArrayView<String> anim_atlas_list() = 0; - virtual std::shared_ptr<struct anim_atlas> anim_atlas(StringView name) = 0; + virtual std::shared_ptr<struct anim_atlas> anim_atlas(StringView name, StringView dir = ANIM_PATH) = 0; static void destroy(); static loader_& default_loader() noexcept; static std::vector<std::shared_ptr<struct tile_atlas>> tile_atlases(StringView filename); @@ -29,6 +30,7 @@ struct loader_ static const StringView IMAGE_PATH; static const StringView ANIM_PATH; + static const StringView SCENERY_PATH; protected: loader_(); |