2021-06-09 20:08:58 +02:00
|
|
|
#include "classicsprite.h"
|
|
|
|
#include <SFML/Graphics/RenderTarget.hpp>
|
|
|
|
|
2021-06-11 19:39:47 +02:00
|
|
|
ClassicSprite::ClassicSprite(const sf::RectangleShape& shape, const sf::Font& font) :
|
2021-06-11 18:58:44 +02:00
|
|
|
_shape(shape),
|
2021-06-11 19:39:47 +02:00
|
|
|
_trail(shape),
|
|
|
|
_font(font)
|
|
|
|
{
|
|
|
|
_grade_text.setFont(_font);
|
|
|
|
}
|
2021-06-09 20:08:58 +02:00
|
|
|
|
|
|
|
void ClassicSprite::draw(sf::RenderTarget& target, sf::RenderStates states) const
|
|
|
|
{
|
|
|
|
target.draw(_shape, states);
|
2021-06-11 18:58:44 +02:00
|
|
|
target.draw(_trail, states);
|
2021-06-11 19:39:47 +02:00
|
|
|
target.draw(_grade_text, states);
|
2021-06-09 20:08:58 +02:00
|
|
|
}
|
|
|
|
|
2021-06-16 17:16:18 +02:00
|
|
|
void ClassicSprite::reset()
|
|
|
|
{
|
|
|
|
_shape.setPosition(0, 0);
|
|
|
|
_trail.setPosition(0, 0);
|
|
|
|
_grade_text.setPosition(0, 0);
|
|
|
|
_grade_text.setFillColor(sf::Color(255, 255, 255, 0));
|
|
|
|
}
|
|
|
|
|
2021-06-11 18:58:44 +02:00
|
|
|
void ClassicSprite::setCoordinates(float x, float y, float trail_x, float trail_y) noexcept
|
2021-06-09 20:08:58 +02:00
|
|
|
{
|
|
|
|
_shape.setPosition(x, y);
|
2021-06-11 18:58:44 +02:00
|
|
|
_trail.setPosition(trail_x, trail_y);
|
2021-06-11 19:39:47 +02:00
|
|
|
_grade_text.setPosition(x + _shape.getSize().x/2, y + 10);
|
2021-06-11 18:58:44 +02:00
|
|
|
}
|
|
|
|
|
2021-06-11 19:39:47 +02:00
|
|
|
void ClassicSprite::update(float trail_x, float trail_y) noexcept
|
2021-06-11 18:58:44 +02:00
|
|
|
{
|
|
|
|
_trail.setPosition(trail_x, trail_y);
|
2021-06-16 17:16:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void ClassicSprite::update() noexcept
|
|
|
|
{
|
2021-06-11 19:39:47 +02:00
|
|
|
fade();
|
|
|
|
}
|
|
|
|
|
2021-06-16 17:16:18 +02:00
|
|
|
void ClassicSprite::pulse()
|
2021-06-11 19:39:47 +02:00
|
|
|
{
|
|
|
|
_grade_text.setFillColor(sf::Color(255, 255, 255, 255));
|
2021-06-16 17:16:18 +02:00
|
|
|
_shape.setFillColor(sf::Color(140, 140, 140));
|
2021-06-11 19:39:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void ClassicSprite::fade()
|
|
|
|
{
|
|
|
|
auto fill_color = _grade_text.getFillColor();
|
|
|
|
|
|
|
|
if (fill_color.a == 0)
|
|
|
|
return;
|
|
|
|
|
2021-06-16 17:16:18 +02:00
|
|
|
auto new_alpha = fill_color.a - 55;
|
2021-06-11 19:39:47 +02:00
|
|
|
fill_color.a = new_alpha < 0 ? 0 : new_alpha;
|
|
|
|
|
|
|
|
_grade_text.setFillColor(fill_color);
|
2021-06-16 17:16:18 +02:00
|
|
|
|
|
|
|
fill_color = _shape.getFillColor();
|
|
|
|
|
|
|
|
if (fill_color.a == 0)
|
|
|
|
return;
|
|
|
|
|
|
|
|
new_alpha = fill_color.a - 55;
|
|
|
|
fill_color.a = new_alpha < 0 ? 0 : new_alpha;
|
|
|
|
|
|
|
|
_shape.setFillColor(fill_color);
|
2021-06-11 19:39:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool ClassicSprite::isDead() const
|
|
|
|
{
|
2021-06-16 17:16:18 +02:00
|
|
|
return _grade_text.getFillColor().a == 0
|
|
|
|
|| _shape.getFillColor().a == 0;
|
2021-06-09 20:08:58 +02:00
|
|
|
}
|