#ifndef RESOURCEHOLDER_H #define RESOURCEHOLDER_H #include #include #include #include namespace sf { class Texture; class Font; } template class ResourceHolder { public: bool load(Id id, const std::string& filename) { std::unique_ptr resource(new Resource()); if (!resource->loadFromFile(filename)) return false; map_resources[id] = std::move(resource); return true; } Resource& get(Id id) const { const auto found = map_resources.find(id); assert(found != map_resources.end()); return *found->second; } private: std::map> map_resources; }; // /////////////////////////////////////////////////////////// // namespace Textures { enum class Id { Player, Weakling, Shotguner, Background }; } using TextureHolder = ResourceHolder; using FontHolder = ResourceHolder; #endif // RESOURCEHOLDER_H