Circle.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #include "Circle.hpp"
  2. Circle::Circle(sf::Color color, float scale): _size(10)
  3. {
  4. _arc.resize(100);
  5. for(unsigned i = 0; i < 100; ++i)
  6. {
  7. _arc[i].setColor(color);
  8. _arc[i].setRotation(3.6f * i);
  9. _arc[i].setScale(scale, scale);
  10. }
  11. }
  12. Circle::~Circle()
  13. {
  14. _arc.clear();
  15. }
  16. void Circle::setTexture(sf::Texture& texture)
  17. {
  18. for(unsigned i = 0; i < 100; ++i)
  19. {
  20. _arc[i].setOrigin(texture.getSize().x / 2.f, 205.f);
  21. _arc[i].setTexture(texture);
  22. }
  23. }
  24. void Circle::setPosition(sf::Vector2f position)
  25. {
  26. for(unsigned i = 0; i < 100; ++i)
  27. _arc[i].setPosition(position);
  28. }
  29. void Circle::setPosition(float x, float y)
  30. {
  31. setPosition(sf::Vector2f(x, y));
  32. }
  33. void Circle::setRotation(float rotation)
  34. {
  35. for(unsigned i = 0; i < 100; ++i)
  36. _arc[i].setRotation(3.6f * i + rotation);
  37. }
  38. void Circle::rotate(float rotation)
  39. {
  40. for(unsigned i = 0; i < 100; ++i)
  41. _arc[i].rotate(rotation);
  42. }
  43. void Circle::setSize(unsigned size)
  44. {
  45. if(size <= 100)
  46. _size = size;
  47. }
  48. void Circle::show()
  49. {
  50. _elapsedTime = sf::Time::Zero;
  51. }
  52. void Circle::update(sf::Time delta)
  53. {
  54. _elapsedTime += delta;
  55. float seconds = _elapsedTime.asSeconds();
  56. if(seconds >= 2.75f && seconds < 3.f)
  57. {
  58. sf::Color color = _arc[0].getColor();
  59. color.a = int((3.f - _elapsedTime.asSeconds()) * 255 * 4);
  60. for(unsigned i = 0; i < _size; ++i)
  61. _arc[i].setColor(color);
  62. }
  63. else if(seconds >= 3.f)
  64. {
  65. sf::Color color = _arc[0].getColor();
  66. color.a = 255;
  67. for(unsigned i = 0; i < _size; ++i)
  68. _arc[i].setColor(color);
  69. }
  70. }
  71. void Circle::draw(sf::RenderTarget& target, sf::RenderStates states) const
  72. {
  73. if(_elapsedTime.asSeconds() >= 3.f)
  74. return;
  75. for(unsigned i = 0; i < _size; ++i)
  76. target.draw(_arc[i]);
  77. }