#pragma once

#include <SFML/Graphics/RenderTarget.hpp>
#include <SFML/Graphics/Sprite.hpp>
#include <memory>

#include "core/sprite.h"

class SpriteSFML : public kku::Sprite
{
public:
    explicit SpriteSFML(sf::RenderTarget * const render_target,
                        const std::shared_ptr<sf::Texture> &texture,
                        const kku::Area<unsigned int>& cropping);

    virtual void setPosition(const kku::Point& position) override;
    virtual kku::Point getPosition() const override;
    virtual void move(const kku::Vector2<float>& delta) override;

    virtual void display() const override;

protected:
    sf::RenderTarget * const _render_target;
    sf::Sprite _sprite;
};