#pragma once #include "atlas-loader-fwd.hpp" #include namespace floormat { struct wall_cell; class wall_atlas; } namespace floormat::loader_detail { template<> struct atlas_loader_traits { using Atlas = wall_atlas; using Cell = wall_cell; // convertible to atlas and holding the atlas using Self = atlas_loader_traits; using Storage = atlas_storage; static StringView loader_name(); static const std::shared_ptr& atlas_of(const Cell& x); static std::shared_ptr& atlas_of(Cell& x); static StringView name_of(const Cell& x); static StringView name_of(const Atlas& x); static String& name_of(Cell& x); static void load_atlas_list(Storage& st); static Pointer make_invalid_atlas(Storage& st); static std::shared_ptr make_atlas(StringView name, const Cell& c); static Optional make_cell(StringView name); }; } // namespace floormat::loader_detail