#pragma once #include "atlas-loader-fwd.hpp" #include namespace floormat { struct anim_cell; class anim_atlas; } namespace floormat::loader_detail { template<> struct atlas_loader_traits { using Atlas = anim_atlas; using Cell = anim_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