#pragma once #include #include "Asset.hpp" class Endthing: public sf::Drawable, public sf::Transformable { public: Endthing() { for (size_t i = 0; i < 3; ++i) { m_sprite[i].setTexture(Asset::texture("data/endthing.png")); m_sprite[i].setTextureRect(sf::IntRect(0, 95 * i, 256, 95)); m_sprite[i].setOrigin(128, 47); } } void toggle(int i, bool val, int dist) { if (dist < 2) dist = 2; m_display[i % 3] = val; m_sprite[i].setPosition(rand() % dist - (dist / 2), rand() % dist - (dist / 2)); if (i > 0) { m_sprite[i].setColor(sf::Color(rand() % 255, rand() % 255, rand() % 255, rand() % 100 + 156)); } } private: void draw(sf::RenderTarget& rt, sf::RenderStates states) const override { states.transform *= getTransform(); for (size_t i = 0; i < 3; ++i) { if (m_display[i]) { rt.draw(m_sprite[i], states); } } } bool m_display[3]; sf::Sprite m_sprite[3]; };