#include "Player.h"

USING_NS_CC;


bool Player::init(){
	//primero la superclase
	if (!Sprite::init())
	{
		return false;
	}
	_speed = 150;
	_currentAnimation = IDLE;
	createIdleAnimation();

	createExplosionAnimation();

	//lanzamos la animacion por defecto
	runAction(_idleAnimation);
	return true;
}

void Player::createIdleAnimation(){
	//creamos un pool de imagenes para la animacion
	Vector animFrames;
	auto acc = 0;
	for (int i = 0; i < 4; i++){
		auto frame = SpriteFrame::create("animacion_nave.png", Rect(acc, 0, 50, 63));
		acc += 50;
		animFrames.pushBack(frame);
	}
	//si ninguna animacion esta corriendo el esprite por defecto es definido aqui
	this->setSpriteFrame(animFrames.at(0));

	//creamos una animacion con un tiempo de espera entre cada frame de 0.25s
	auto animation = Animation::createWithSpriteFrames(animFrames, 0.25f);

	//creamos la accion de animar el objeto animation
	auto animate = Animate::create(animation);

	//creamos una accion que repita para siempre la animacion
	_idleAnimation = RepeatForever::create(animate);

	// ponemos un tag a la animacion para poder pararla en el futuro
	_idleAnimation->setTag(Player::Animations::IDLE);
}

void Player::createExplosionAnimation(){
	Vector animFrames;
	auto acc = 0;
	for (int i = 0; i < 4; i++){
		auto frame = SpriteFrame::create("player_explosion.png", Rect(acc, 0, 50, 63));
		acc += 50;
		animFrames.pushBack(frame);
	}

	auto animation = Animation::createWithSpriteFrames(animFrames, 0.15f);
	
	//creamos la accion de animar el objeto animation, en este caso no necesitamos
	//un RepeatForever porque solo debe explotar una vez y parar.
	_explosionAnimation = Animate::create(animation);

	_explosionAnimation->setTag(Player::Animations::EXPLOSION);
}


void Player::update(float dt){

}