/********************************************************************
 *  Nomes: Gabriel Capella                       Números USP: 8962078 
 *         João Herique Luciano                               8535957
 * 
 *  Tarefa:    RedCore - EP2 MAC0463
 *  Arquivo:   BlocksLayer.h
 *  Descrição: Classe de construção dos blocos - header
 ********************************************************************/

#ifndef BlocksLayer_h
#define BlocksLayer_h

#include "cocos2d.h"

class BlocksLayer : public cocos2d::Node {
    public:

    	/**
    	 * @brief Inicializa os blocos da fase
    	 */
	    virtual bool init();

	    /**
	     * @brief Configura os blocos de acordo com nível da fase
	     * 
	     * @param level - indica o nível da fase a ser criada
	     */
	    void setLevel(int level);

	    /**
	     * @brief Macro do cocos2d-x para criar o método create(), que
	     *        cria um objeto dessa classe
	     * 
	     * @param  Nome da classe à qual o objeto pertence
	     */
	    CREATE_FUNC(BlocksLayer);

    private:
    	/**
    	 * @brief Cria uma camada de blocos ao redor do núcleo
    	 * 
    	 * @param size - espessura
    	 * @param number - número da camada
    	 * @param number_of_segments - número de segmentos (blocos) da camada
    	 * @param p - probabilidade de cada segmento ser indestrutível 
    	 * @return - nó da camada de blocos
    	 */
		Node* createCircle (double size, int number, int number_of_segments, double p);

		/**
		 * @brief - cria um bloco (segmento da camada)
		 * 
		 * @param r_internal - raio do círculo que delimita a parte mais interna da camada
		 * @param r_externa - raio do círculo que delimita a parte mais externa da camada
		 * @param begin - onde começa lateralmente o bloco
		 * @param end - onde termina lateralmente o bloco
		 * @param especial - indica se o bloco em questão é indestrutível ou não
		 * @return [description]
		 */
	    Node* createSegment (double r_internal, double r_externa, double begin, double end, bool especial);
};


#endif /* BlocksLayer_h */
