diff options
Diffstat (limited to 'loader/wall-traits.cpp')
-rw-r--r-- | loader/wall-traits.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/loader/wall-traits.cpp b/loader/wall-traits.cpp index f51974bc..b5a4245c 100644 --- a/loader/wall-traits.cpp +++ b/loader/wall-traits.cpp @@ -7,6 +7,7 @@ #include "src/tile-defs.hpp" #include "src/wall-atlas.hpp" #include <cr/StringView.h> +#include <cr/Optional.h> #include <cr/Pointer.h> #include <mg/ImageData.h> #include <mg/ImageView.h> @@ -15,22 +16,23 @@ namespace floormat::loader_detail { namespace { const auto placeholder_cell = wall_cell{}; } using wall_traits = atlas_loader_traits<wall_atlas>; -StringView atlas_loader_traits<wall_atlas>::loader_name() { return "wall_atlas"_s; } -auto atlas_loader_traits<wall_atlas>::atlas_of(const Cell& x) -> const std::shared_ptr<Atlas>& { return x.atlas; } -auto atlas_loader_traits<wall_atlas>::atlas_of(Cell& x) -> std::shared_ptr<Atlas>& { return x.atlas; } -StringView atlas_loader_traits<wall_atlas>::name_of(const Cell& x) { return x.name; } -StringView atlas_loader_traits<wall_atlas>::name_of(const Atlas& x) { return x.name(); } +StringView wall_traits::loader_name() { return "wall_atlas"_s; } +auto wall_traits::atlas_of(const Cell& x) -> const std::shared_ptr<Atlas>& { return x.atlas; } +auto wall_traits::atlas_of(Cell& x) -> std::shared_ptr<Atlas>& { return x.atlas; } +StringView wall_traits::name_of(const Cell& x) { return x.name; } +StringView wall_traits::name_of(const Atlas& x) { return x.name(); } +String& wall_traits::name_of(Cell& x) { return x.name; } void wall_traits::ensure_atlases_loaded(Storage& st) { - if (!st.cell_array.empty()) [[likely]] + if (!st.name_map.empty()) [[likely]] return; - fm_assert(st.name_map.empty()); + st.name_map.max_load_factor(0.4f); constexpr bool add_invalid = true; st.cell_array = wall_cell::load_atlases_from_json().vec; - st.name_map.reserve(st.cell_array.size()); + st.name_map.reserve(st.cell_array.size()*2); fm_assert(!st.cell_array.empty()); fm_assert(st.name_map.empty()); @@ -90,4 +92,6 @@ auto wall_traits::make_atlas(StringView name, const Cell&) -> std::shared_ptr<At return atlas; } +auto wall_traits::make_cell(StringView) -> Optional<Cell> { return {}; } + } // namespace floormat::loader_detail |