#pragma once #include #include namespace kku { template class ResourceHolder { public: inline void load(Id id, std::unique_ptr&& resource) noexcept { _resources[id] = std::move(resource); } inline std::shared_ptr get(Id id) const { return _resources.find(id)->second; } private: std::map> _resources; }; namespace Font { enum class Id { GUI }; } namespace Texture { enum class Id { GUI }; } namespace GUISprite { enum class Id { SFML_LOGO, CRYPTOPP_LOGO }; } }