#pragma once

#include <SFML/Graphics/RenderTarget.hpp>
#include <SFML/Graphics/Text.hpp>
#include <SFML/Graphics/Font.hpp>
#include <memory>

#include "core/text.h"

class TextSFML : public kku::Text
{
public:
    explicit TextSFML(sf::RenderTarget * const render_target,
                      const std::shared_ptr<const sf::Font>& font);

    virtual void setString(const std::string& string) override;
    virtual void setCharacterSize(std::size_t pixels) override;
    virtual void setPosition(const kku::Point& point) override;
    virtual void move(const kku::Vector2<float>& delta) override;
    virtual void setColor(const kku::Color& color) override;

    virtual void display() override;

protected:
    sf::RenderTarget * const _render_target;
    sf::Text _text;
};
