diff options
Diffstat (limited to 'loader')
| -rw-r--r-- | loader/loader.cpp | 11 | ||||
| -rw-r--r-- | loader/loader.hpp | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/loader/loader.cpp b/loader/loader.cpp index a07f96be..e9401385 100644 --- a/loader/loader.cpp +++ b/loader/loader.cpp @@ -22,6 +22,17 @@ loader_& loader = loader_::default_loader(); loader_::loader_() = default; loader_::~loader_() = default; +StringView loader_::strip_prefix(StringView name) +{ + if (name.hasPrefix(IMAGE_PATH)) + return name.exceptPrefix(IMAGE_PATH.size()); + if (name.hasPrefix(ANIM_PATH)) + return name.exceptPrefix(ANIM_PATH.size()); + if (name.hasPrefix(SCENERY_PATH)) + return name.exceptPrefix(SCENERY_PATH.size()); + return name; +} + 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; diff --git a/loader/loader.hpp b/loader/loader.hpp index 843d0a72..577f45c5 100644 --- a/loader/loader.hpp +++ b/loader/loader.hpp @@ -31,6 +31,7 @@ struct loader_ virtual const std::vector<serialized_scenery>& sceneries() = 0; virtual const scenery_proto& scenery(StringView name) noexcept(false) = 0; virtual StringView startup_directory() noexcept = 0; + static StringView strip_prefix(StringView name); loader_(const loader_&) = delete; loader_& operator=(const loader_&) = delete; |
