/********************************************************************
 *  Nomes: Gabriel Capella                       Números USP: 8962078 
 *         João Herique Luciano                               8535957
 * 
 *  Tarefa:    RedCore - EP2 MAC0463
 *  Arquivo:   Ball.h
 *  Descrição: Classe para auxiliar na criação da bola no jogo.
 ********************************************************************/

#ifndef Ball_h
#define Ball_h

#include "cocos2d.h"

class Ball : public cocos2d::Node {
    public:
        /**
         * Inicia elementos quando a bola é criada.
         * @return se foi possível criar a bola ou não.
         */
        virtual bool init();

        /**
         * Reescreve a função de posicionar o node.
         * A bola somente colide após esse método ser chamado.
         * 
         * @param x posição da bola no eixo x
         * @param y posição da bola no eixo y
         */
        virtual void setPosition(float x, float y);

        /**
         * Lança a bola.
         */
        void throwBall();

        /**
         * É um macro do cocos2d-x que define a função create do
         * do classe.
         * 
         * @param Classe para qual vai criar.
         */
        CREATE_FUNC(Ball);

        /**
         * Marca se é uma superbola ou não.
         */
        bool superball;

        /**
         * Transforma em uma super bola.
         */
        void setSuperball();

        /**
         * Transforma a bola em uma bola normar, sem poderes.
         */
        void resetNormalball();
    private:
        /**
         * Desenho (imagem) da bola normal.
         */
        cocos2d::DrawNode* ball_draw;

        /**
         * Desenho (imagem) da superbola.
         */
        cocos2d::DrawNode* superball_draw;
};

#endif /* Ball_h */
