#include "Bullet.h"

USING_NS_CC;

bool Bullet::initWithFile(const std::string& filename){

	if (!Sprite::initWithFile(filename)){
		return false;
	}

	_speed = 100;
	//invisible por defecto
	setVisible(false);
	schedule(schedule_selector(Bullet::update));
	return true;
}


Bullet* Bullet::createPlayerBullet(){
	Bullet *sprite = new (std::nothrow) Bullet();
	if (sprite && sprite->initWithFile("disparo_nave.png"))
	{
		sprite->_type = PLAYER_BULLET;
		sprite->autorelease();
		return sprite;
	}
	CC_SAFE_DELETE(sprite);
	return nullptr;
}

Bullet* Bullet::createEnemyBullet(){
	Bullet *sprite = new (std::nothrow) Bullet();
	if (sprite && sprite->initWithFile("disparo_enemigo.png"))
	{
		sprite->_type = ENEMY_BULLET;
		sprite->autorelease();
		return sprite;
	}
	CC_SAFE_DELETE(sprite);
	return nullptr;
}

void Bullet::update(float dt){
	if (!this->isVisible()) return;

	if (_type == PLAYER_BULLET){
		//para arriba
		setAnchorPoint(Point(0.5, 0));
		setPosition(getPositionX(), getPositionY() + _speed*dt);
		if (getPositionY() > Director::getInstance()->getVisibleSize().height){
			setVisible(false);
		}
	}
	else if (_type == ENEMY_BULLET){
		//para abajo
		setAnchorPoint(Point(0.5, 1));
		setPosition(getPositionX(), getPositionY() - _speed*dt);
		if (getPositionY() < 0){
			setVisible(false);
		}
	}
}