#include "PlayerUpgradeParticle.h"

USING_NS_CC;

bool PlayerUpgradeParticle::init()
{
	if (!Node::init()){
		return false;
	}
	_target = nullptr;
	_initialized = false;
	_speed = 100;
	_particle = ParticleSystemQuad::create("shootx2.plist");
	_particle->setLife(0.2f);
	_particle->setScale(getScale()*0.2f);
	setVisible(false);
	_particle->setPosition(Point(0, 0));
	addChild(_particle);
	scheduleUpdate();
	return true;
}

void PlayerUpgradeParticle::update(float dt)
{
	if (!isVisible()) return;
	//para abjo
	setAnchorPoint(Point(0.5, 1));
	setPosition(getPositionX(), getPositionY() - _speed*dt);
	if (getPositionY() < 0){
		setVisible(false);
	}
	//si alcanza al jugador actualiza su municion
	if (_target != nullptr && _target->getBoundingBox().intersectsRect(getBoundingBox())
		&& isVisible() && _target->isVisible() && _target->getCurrentAnimation() != Player::Animations::EXPLOSION)
	{
		_target->updateBullets(CC_CALLBACK_0(PlayerUpgradeParticle::createBullet, this));
		setVisible(false);
	}
}


PlayerBullet* PlayerUpgradeParticle::createBullet(){
	return PlayerBulletx2::create();
}

void PlayerUpgradeParticle::setVisible(bool visible){
	Node::setVisible(visible);
	_particle->setVisible(visible);
	if (visible){
		_particle->resetSystem();
	}
	else
	{
		_particle->stopSystem();
	}
}