|
@@ -1,10 +1,11 @@
|
|
-//
|
|
|
|
-// GameScene.h
|
|
|
|
-// RedCore2
|
|
|
|
-//
|
|
|
|
-// Created by Gabriel Capella on 31/05/17.
|
|
|
|
-//
|
|
|
|
-//
|
|
|
|
|
|
+/********************************************************************
|
|
|
|
+ * Nomes: Gabriel Capella Números USP: 8962078
|
|
|
|
+ * João Herique Luciano 8535957
|
|
|
|
+ *
|
|
|
|
+ * Tarefa: RedCore - EP2 MAC0463
|
|
|
|
+ * Arquivo: GameScene.h
|
|
|
|
+ * Descrição: Classe do cenário e do mecanismo de jogo
|
|
|
|
+ ********************************************************************/
|
|
|
|
|
|
#ifndef GameScene_h
|
|
#ifndef GameScene_h
|
|
#define GameScene_h
|
|
#define GameScene_h
|
|
@@ -14,36 +15,184 @@
|
|
|
|
|
|
class GameScene : public cocos2d::Layer {
|
|
class GameScene : public cocos2d::Layer {
|
|
public:
|
|
public:
|
|
|
|
+ /**
|
|
|
|
+ * @brief Cria a cena do jogo
|
|
|
|
+ *
|
|
|
|
+ * @param level - nível atual do jogo
|
|
|
|
+ * @return - Ponteiro para objeto da cena do jogo
|
|
|
|
+ */
|
|
static cocos2d::Scene* createScene(int level);
|
|
static cocos2d::Scene* createScene(int level);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Inicializa essa classe
|
|
|
|
+ *
|
|
|
|
+ */
|
|
virtual bool init();
|
|
virtual bool init();
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Processa o contato entre duas formas no jogo
|
|
|
|
+ *
|
|
|
|
+ * @param contact objeto representando o contato entre duas formas no cocos2d
|
|
|
|
+ * @return Indicador de que houve colisão
|
|
|
|
+ */
|
|
bool onContactBegin(cocos2d::PhysicsContact& contact);
|
|
bool onContactBegin(cocos2d::PhysicsContact& contact);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Macro do cocos2d-x para criar um método create() para certa classe
|
|
|
|
+ *
|
|
|
|
+ * @param Nome da classe cujo método create() será criado
|
|
|
|
+ */
|
|
CREATE_FUNC(GameScene);
|
|
CREATE_FUNC(GameScene);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief configura o jogo para um certo nível
|
|
|
|
+ *
|
|
|
|
+ * @param level nível do jogo
|
|
|
|
+ */
|
|
void setLevel(int level);
|
|
void setLevel(int level);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Mostra um(a) alerta/mensagem na tela do jogo
|
|
|
|
+ *
|
|
|
|
+ * @param text string contendo a mensagem a ser mostrada
|
|
|
|
+ */
|
|
void alert(std::string text); // Mostra alerta
|
|
void alert(std::string text); // Mostra alerta
|
|
private:
|
|
private:
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Caso de colisão entre a bola e a parte inferior da tela
|
|
|
|
+ *
|
|
|
|
+ * @param ball Nó representando a bola que colidiu com a parte inferior da tela
|
|
|
|
+ */
|
|
void caseBallCollision (cocos2d::Node *ball);
|
|
void caseBallCollision (cocos2d::Node *ball);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Caso de colisão entre a bola e o núcleo
|
|
|
|
+ *
|
|
|
|
+ * @param core Nó da árvore que representa o núcleo
|
|
|
|
+ * @param ball Nó da árvore que representa a bola
|
|
|
|
+ */
|
|
void caseBallCore (cocos2d::Node *core, cocos2d::Node *ball);
|
|
void caseBallCore (cocos2d::Node *core, cocos2d::Node *ball);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Caso onde o usuário pegou o power-up de salvar o nível
|
|
|
|
+ *
|
|
|
|
+ * @param powerup_ball Nó que representa o power-up
|
|
|
|
+ */
|
|
void caseSaveLevel(Node *powerup_ball);
|
|
void caseSaveLevel(Node *powerup_ball);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Substitui a cena atual pela cena do próximo nível
|
|
|
|
+ *
|
|
|
|
+ * @param pSender
|
|
|
|
+ */
|
|
void NextLevel(cocos2d::Ref *pSender);
|
|
void NextLevel(cocos2d::Ref *pSender);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Salva o nível atual
|
|
|
|
+ */
|
|
void saveLevel();
|
|
void saveLevel();
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Define a probabilidade de aparição e a geração do power
|
|
|
|
+ * up das bolas triplas
|
|
|
|
+ */
|
|
void tripleBallsAppearance();
|
|
void tripleBallsAppearance();
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Caso onde o usuário pegou o power-up de bolas triplas
|
|
|
|
+ *
|
|
|
|
+ * @param powerup_ball Nó que representa o power-up
|
|
|
|
+ */
|
|
void caseTripleBalls(Node *powerup_ball);
|
|
void caseTripleBalls(Node *powerup_ball);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Define a probabilidade de aparição e a geração
|
|
|
|
+ * do power up de aumento/diminução da pá
|
|
|
|
+ */
|
|
void paddleBallAppearance();
|
|
void paddleBallAppearance();
|
|
- void caseRaqueteBall(Node *powerup_ball);
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Caso onde o usuário pegou o power-up de
|
|
|
|
+ * aumento/diminuição da pá
|
|
|
|
+ *
|
|
|
|
+ * @param powerup_ball Nó que representa o power-up
|
|
|
|
+ */
|
|
|
|
+ void casePaddleBall(Node *powerup_ball);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Define a probabilidade de aparição e a geração
|
|
|
|
+ * do power up da super-bola
|
|
|
|
+ */
|
|
void superBallAppearance();
|
|
void superBallAppearance();
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Caso onde o usuário pegou o power-up da super-bola
|
|
|
|
+ *
|
|
|
|
+ * @param powerup_ball Nó que representa o power-up
|
|
|
|
+ */
|
|
void caseSuperBall(Node *powerup_ball);
|
|
void caseSuperBall(Node *powerup_ball);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Adiciona e joga uma nova bola na cena
|
|
|
|
+ */
|
|
void addAndThrowBall();
|
|
void addAndThrowBall();
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Remove as bolas e os power-ups que estão na tela
|
|
|
|
+ */
|
|
void removeBallsAndPowersUP();
|
|
void removeBallsAndPowersUP();
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Cria a bolinha que representa o power-up
|
|
|
|
+ *
|
|
|
|
+ * @param color Cor da bolinha
|
|
|
|
+ * @param tag identificação da bolinha (usada no tratamento de colisões)
|
|
|
|
+ */
|
|
void createPowerUpBody(cocos2d::Color4B color, int tag);
|
|
void createPowerUpBody(cocos2d::Color4B color, int tag);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @brief Cria um delay com callback que será usado na aparição dos
|
|
|
|
+ * power-ups
|
|
|
|
+ *
|
|
|
|
+ * @param func função a ser chamada no callback
|
|
|
|
+ */
|
|
void delayCallback(const std::function<void ()> &func);
|
|
void delayCallback(const std::function<void ()> &func);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Nível atual
|
|
|
|
+ */
|
|
int level;
|
|
int level;
|
|
- bool over; // salva se o jogo acabou!
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Indica se o jogo já acabou
|
|
|
|
+ */
|
|
|
|
+ bool over;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Ponteiro para a pá do jogo
|
|
|
|
+ */
|
|
Paddle * paddle;
|
|
Paddle * paddle;
|
|
- cocos2d::Node* balls; // Bolas
|
|
|
|
- cocos2d::Node* power_ups; // Bolas
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Lista de bolas na cena
|
|
|
|
+ */
|
|
|
|
+ cocos2d::Node* balls;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Lista de power-ups na cena
|
|
|
|
+ */
|
|
|
|
+ cocos2d::Node* power_ups;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Tamanho da tela
|
|
|
|
+ */
|
|
double height, width; // tamanho do quadro
|
|
double height, width; // tamanho do quadro
|
|
- unsigned long int last_touch; // ultima vez que a bola colidiu com algo
|
|
|
|
-};
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Última vez que a bola colidiu no jogo
|
|
|
|
+ */
|
|
|
|
+ unsigned long int last_touch;
|
|
|
|
+};
|
|
|
|
|
|
#endif /* GameScene_h */
|
|
#endif /* GameScene_h */
|