123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #include "Kebab.hpp"
- #include "Echo.hpp"
- #include "Player.hpp"
- Texture Kebab::_tex;
- Texture Kebab::_tex2;
- Kebab::Kebab(Shared* context)
- {
- _context = context;
- if(_tex.getSize().x == 0) {
- _tex.loadFromFile("data/kebab.png");
- }
- if(_tex2.getSize().x == 0) {
- _tex2.loadFromFile("data/kebab2.png");
- }
- keb.setTexture(_tex);
- spr.setTexture(_tex2);
- keb.setOrigin(16, 24);
- spr.setOrigin(16, 24);
- dead = 0;
- released = 1;
- phasing = 0;
- }
- Kebab::~Kebab()
- {
- }
- void Kebab::loop(float delta)
- {
- IntRect b = IntRect(getPosition().x + keb.getGlobalBounds().left,
- getPosition().y + keb.getGlobalBounds().top + 24.f,
- keb.getTextureRect().width,
- keb.getTextureRect().height);
- for(unsigned i = 0; i < _context->gz.size(); ++i)
- {
- if(_context->gz[i].intersects(b))
- {
- dead = true;
- _context->gz[i].width = 0;
- _context->_s += 100;
- return;
- }
- }
- int phaseSpeed = 300;
- int a = keb.getColor().a;
- if(!released) {
- spr.move(delta * 160.f * spr.getScale().x, 0);
- }
- if(!phasing) {
- if(clk.getElapsedTime().asSeconds() > 16.f) {
- a -= delta * phaseSpeed;
- if(a <= 0)
- dead = true;
- else {
- keb.setColor(Color(255, 255, 255, a >= 0 ? a : 0));
- if(released) spr.setColor(Color(255, 255, 255, a >= 0 ? a : 0));
- }
- }
- else if(a < 255) {
- a += delta * phaseSpeed;
- keb.setColor(Color(255, 255, 255, a < 255 ? a : 255));
- if(released) spr.setColor(Color(255, 255, 255, a < 255 ? a : 255));
- }
- if(_context->p->getPosition().x + 48.f < getPosition().x) {
- if(spr.getScale().x == 1.f && rotcd.getElapsedTime().asSeconds() > 2.f) {
- spr.setScale(-1.f, 1.f);
- keb.setScale(-1.f, 1.f);
- rotcd.restart();
- }
- }
- else if(_context->p->getPosition().x - 48.f > getPosition().x) {
- if(spr.getScale().x == -1.f && rotcd.getElapsedTime().asSeconds() > 2.f) {
- spr.setScale(1.f, 1.f);
- keb.setScale(1.f, 1.f);
- rotcd.restart();
- }
- }
- else if(_context->p->getPosition().y != getPosition().y) {
- if(phasecd.getElapsedTime().asSeconds() > 4.f)
- phasing = true;
- }
- else {
- released = false;
- }
- move(delta * 120.f * keb.getScale().x, 0.f);
- }
- else {
- phasecd.restart();
- a -= delta * phaseSpeed;
- keb.setColor(Color(255, 255, 255, a >= 0 ? a : 0));
- if(released) spr.setColor(Color(255, 255, 255, a >= 0 ? a : 0));
- if(a <= 20) {
- phasing = false;
- move(0, 16.f);
- }
- }
- }
- void Kebab::draw(RenderTarget& target, RenderStates states) const
- {
- states.transform *= getTransform();
- target.draw(spr, states);
- target.draw(keb, states);
- }
|