#pragma once #include #include #include #include #include #include #include "log.hpp" #include "math.hpp" class Sprite { public: Sprite(); ~Sprite(); explicit Sprite(std::string path, WorldPos center = WorldPos{}); Sprite(const Sprite &) = delete; Sprite &operator=(const Sprite &) = delete; Sprite(Sprite &&) = delete; Sprite &operator=(Sprite &&) = delete; static void SetRenderer(std::shared_ptr renderer); // GetTexture cannot return pointer to const, as SDL_RenderTexture modifies it SDL_Texture *GetTexture() { return m_Texture.get(); } WorldSize GetSize() const { return m_Size; } WorldPos GetCenter() const { return m_ImageCenter; } void LoadImage(std::string path, WorldPos image_center = WorldPos{}); private: static std::shared_ptr m_Renderer; std::unique_ptr m_Texture; WorldSize m_Size; WorldPos m_ImageCenter; float m_TextureWidth = 0; float m_TextureHeight = 0; };