diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2024-01-11 18:15:00 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2024-01-11 18:15:00 +0100 |
commit | c93b3616adbf26673fc928fdfbbec814fec41c75 (patch) | |
tree | 517ee19f32a2ae7d098141335b04e92bffcdc564 /loader | |
parent | 98416d95331c63affabf331afba0e1dcb307c430 (diff) |
w
Diffstat (limited to 'loader')
-rw-r--r-- | loader/ground-atlas.cpp | 14 | ||||
-rw-r--r-- | loader/impl.cpp | 2 | ||||
-rw-r--r-- | loader/impl.hpp | 2 | ||||
-rw-r--r-- | loader/loader.hpp | 2 | ||||
-rw-r--r-- | loader/texture.cpp | 2 | ||||
-rw-r--r-- | loader/vobj.cpp | 6 |
6 files changed, 15 insertions, 13 deletions
diff --git a/loader/ground-atlas.cpp b/loader/ground-atlas.cpp index c4e4a516..2835db2d 100644 --- a/loader/ground-atlas.cpp +++ b/loader/ground-atlas.cpp @@ -1,5 +1,4 @@ #include "impl.hpp" -#include "ground-info.hpp" #include "src/ground-atlas.hpp" #include "compat/exception.hpp" #include "serialize/json-helper.hpp" @@ -17,15 +16,16 @@ using loader_detail::loader_impl; namespace floormat::loader_detail { -std::shared_ptr<ground_atlas> loader_impl::get_ground_atlas(StringView name, StringView dir, Vector2ub size, pass_mode pass) +std::shared_ptr<ground_atlas> loader_impl::get_ground_atlas(StringView name, Vector2ub size, pass_mode pass) { fm_assert(name != "<invalid>"_s); char buf[FILENAME_MAX]; - auto filename = make_atlas_path(buf, dir, name); + auto filename = make_atlas_path(buf, loader.GROUND_TILESET_PATH, name); auto tex = texture(""_s, filename); - auto atlas = std::make_shared<class ground_atlas>(filename, name, tex, size, pass); + auto info = ground_info{name, {}, size, pass}; + auto atlas = std::make_shared<class ground_atlas>(info, filename, tex); return atlas; } @@ -45,7 +45,7 @@ std::shared_ptr<class ground_atlas> loader_impl::ground_atlas(StringView name, b goto error; } else if (!it->second->atlas) - return it->second->atlas = get_ground_atlas(name, loader.GROUND_TILESET_PATH, it->second->size, it->second->pass); + return it->second->atlas = get_ground_atlas(name, it->second->size, it->second->pass); else return it->second->atlas; } @@ -110,8 +110,8 @@ const ground_info& loader_impl::make_invalid_ground_atlas() return *invalid_ground_atlas; auto atlas = std::make_shared<class ground_atlas>( - ""_s, loader.INVALID, make_error_texture(Vector2ui(iTILE_SIZE2)), - Vector2ub{1,1}, pass_mode::pass); + ground_info{loader.INVALID, {}, Vector2ub{1,1}, pass_mode::pass}, + ""_s, make_error_texture(Vector2ui(iTILE_SIZE2))); invalid_ground_atlas = Pointer<ground_info>{ InPlaceInit, atlas->name(), atlas, atlas->num_tiles2(), atlas->pass_mode()}; diff --git a/loader/impl.cpp b/loader/impl.cpp index 1ea7b7b6..0f15e74c 100644 --- a/loader/impl.cpp +++ b/loader/impl.cpp @@ -2,8 +2,8 @@ #include "compat/assert.hpp" #include "loader/scenery.hpp" #include "loader/vobj-info.hpp" -#include "loader/ground-info.hpp" #include "loader/wall-info.hpp" +#include "src/ground-atlas.hpp" #include <Corrade/Containers/Pair.h> #include <Magnum/Trade/ImageData.h> diff --git a/loader/impl.hpp b/loader/impl.hpp index 0b718527..5f1a8ff0 100644 --- a/loader/impl.hpp +++ b/loader/impl.hpp @@ -65,7 +65,7 @@ struct loader_impl final : loader_ ArrayView<const ground_info> ground_atlas_list() noexcept(false) override; void get_ground_atlas_list(); const ground_info& make_invalid_ground_atlas(); - std::shared_ptr<class ground_atlas> get_ground_atlas(StringView name, StringView path, Vector2ub size, pass_mode pass) noexcept(false) override; + std::shared_ptr<class ground_atlas> get_ground_atlas(StringView name, Vector2ub size, pass_mode pass) noexcept(false) override; // >-----> anim >-----> tsl::robin_map<StringView, std::shared_ptr<class anim_atlas>> anim_atlas_map; diff --git a/loader/loader.hpp b/loader/loader.hpp index b62988ca..cc519765 100644 --- a/loader/loader.hpp +++ b/loader/loader.hpp @@ -25,7 +25,7 @@ struct loader_ { virtual StringView shader(StringView filename) noexcept = 0; virtual Trade::ImageData2D texture(StringView prefix, StringView filename) noexcept(false) = 0; - virtual std::shared_ptr<class ground_atlas> get_ground_atlas(StringView name, StringView path, Vector2ub size, pass_mode pass) noexcept(false) = 0; + virtual std::shared_ptr<class ground_atlas> get_ground_atlas(StringView name, Vector2ub size, pass_mode pass) noexcept(false) = 0; virtual std::shared_ptr<class ground_atlas> ground_atlas(StringView filename, bool fail_ok = false) noexcept(false) = 0; virtual ArrayView<const String> anim_atlas_list() = 0; virtual std::shared_ptr<class anim_atlas> anim_atlas(StringView name, StringView dir = ANIM_PATH) noexcept(false) = 0; diff --git a/loader/texture.cpp b/loader/texture.cpp index 59e8f25a..a68a6337 100644 --- a/loader/texture.cpp +++ b/loader/texture.cpp @@ -18,7 +18,7 @@ Trade::ImageData2D loader_impl::texture(StringView prefix, StringView filename_) constexpr size_t max_extension_length = 16; const auto N = prefix.size(); - if (N > 0) + if (N > 0) [[likely]] fm_assert(prefix[N-1] == '/'); fm_soft_assert(filename_.size() + prefix.size() + max_extension_length + 1 < FILENAME_MAX); fm_soft_assert(check_atlas_name(filename_)); diff --git a/loader/vobj.cpp b/loader/vobj.cpp index a309fd6a..66aef1cd 100644 --- a/loader/vobj.cpp +++ b/loader/vobj.cpp @@ -46,7 +46,7 @@ namespace floormat::loader_detail { std::shared_ptr<class anim_atlas> loader_impl::make_vobj_anim_atlas(StringView name, StringView image_filename) { - auto tex = texture(VOBJ_PATH, image_filename, false); + auto tex = texture(VOBJ_PATH, image_filename); anim_def def; def.object_name = name; const auto size = tex.pixels().size(); @@ -67,10 +67,12 @@ std::shared_ptr<class anim_atlas> loader_impl::make_vobj_anim_atlas(StringView n void loader_impl::get_vobj_list() { + fm_assert(vobjs.empty()); + vobjs.clear(); vobj_atlas_map.clear(); - auto vec = json_helper::from_json<std::vector<struct vobj>>(Path::join(VOBJ_PATH, "vobj.json")); + vec.shrink_to_fit(); vobjs.reserve(vec.size()); vobj_atlas_map.reserve(2*vec.size()); |