#pragma once #include <memory> #include "core/line.h" #include "core/music.h" #include "core/rectangle.h" #include "core/resourceholder.h" #include "core/sprite.h" #include "core/text.h" #include "core/vector.h" namespace kku { /// CoreFactory /// /// Provides basic /// multimedia elements and data class CoreFactory { public: virtual ~CoreFactory() = default; virtual std::shared_ptr<kku::Music> getMusic() const = 0; virtual std::shared_ptr<kku::Text> getText(kku::Font::Id id) const = 0; virtual std::shared_ptr<kku::Rectangle> getRectangle() const = 0; virtual std::shared_ptr<kku::Line> getLine() const = 0; virtual std::shared_ptr<kku::Sprite> getSprite(kku::GUISprite::Id id) const = 0; virtual kku::Vector2<std::size_t> getRenderSize() const = 0; }; } // namespace kku