summaryrefslogtreecommitdiffhomepage
path: root/loader
diff options
context:
space:
mode:
Diffstat (limited to 'loader')
-rw-r--r--loader/atlas.cpp4
-rw-r--r--loader/impl.hpp2
-rw-r--r--loader/json.cpp2
-rw-r--r--loader/loader.cpp1
-rw-r--r--loader/loader.hpp4
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_();