GameScene.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. /********************************************************************
  2. * Nomes: Gabriel Capella Números USP: 8962078
  3. * João Herique Luciano 8535957
  4. *
  5. * Tarefa: RedCore - EP2 MAC0463
  6. * Arquivo: GameScene.h
  7. * Descrição: Classe do cenário e do mecanismo de jogo
  8. ********************************************************************/
  9. #ifndef GameScene_h
  10. #define GameScene_h
  11. #include "cocos2d.h"
  12. #include "GameScene/Paddle.h"
  13. class GameScene : public cocos2d::Layer {
  14. public:
  15. /**
  16. * @brief Cria a cena do jogo
  17. *
  18. * @param level - nível atual do jogo
  19. * @return - Ponteiro para objeto da cena do jogo
  20. */
  21. static cocos2d::Scene* createScene(int level);
  22. /**
  23. * @brief Inicializa essa classe
  24. *
  25. */
  26. virtual bool init();
  27. /**
  28. * @brief Processa o contato entre duas formas no jogo
  29. *
  30. * @param contact objeto representando o contato entre duas formas no cocos2d
  31. * @return Indicador de que houve colisão
  32. */
  33. bool onContactBegin(cocos2d::PhysicsContact& contact);
  34. /**
  35. * @brief Macro do cocos2d-x para criar um método create() para certa classe
  36. *
  37. * @param Nome da classe cujo método create() será criado
  38. */
  39. CREATE_FUNC(GameScene);
  40. /**
  41. * @brief configura o jogo para um certo nível
  42. *
  43. * @param level nível do jogo
  44. */
  45. void setLevel(int level);
  46. /**
  47. * @brief Mostra um(a) alerta/mensagem na tela do jogo
  48. *
  49. * @param text string contendo a mensagem a ser mostrada
  50. */
  51. void alert(std::string text); // Mostra alerta
  52. private:
  53. /**
  54. * @brief Caso de colisão entre a bola e a parte inferior da tela
  55. *
  56. * @param ball Nó representando a bola que colidiu com a parte inferior da tela
  57. */
  58. void caseBallCollision (cocos2d::Node *ball);
  59. /**
  60. * @brief Caso de colisão entre a bola e o núcleo
  61. *
  62. * @param core Nó da árvore que representa o núcleo
  63. * @param ball Nó da árvore que representa a bola
  64. */
  65. void caseBallCore (cocos2d::Node *core, cocos2d::Node *ball);
  66. /**
  67. * @brief Caso onde o usuário pegou o power-up de salvar o nível
  68. *
  69. * @param powerup_ball Nó que representa o power-up
  70. */
  71. void caseSaveLevel(Node *powerup_ball);
  72. /**
  73. * @brief Substitui a cena atual pela cena do próximo nível
  74. *
  75. * @param pSender
  76. */
  77. void NextLevel(cocos2d::Ref *pSender);
  78. /**
  79. * @brief Salva o nível atual
  80. */
  81. void saveLevel();
  82. /**
  83. * @brief Define a probabilidade de aparição e a geração do power
  84. * up das bolas triplas
  85. */
  86. void tripleBallsAppearance();
  87. /**
  88. * @brief Caso onde o usuário pegou o power-up de bolas triplas
  89. *
  90. * @param powerup_ball Nó que representa o power-up
  91. */
  92. void caseTripleBalls(Node *powerup_ball);
  93. /**
  94. * @brief Define a probabilidade de aparição e a geração
  95. * do power up de aumento/diminução da pá
  96. */
  97. void paddleBallAppearance();
  98. /**
  99. * @brief Caso onde o usuário pegou o power-up de
  100. * aumento/diminuição da pá
  101. *
  102. * @param powerup_ball Nó que representa o power-up
  103. */
  104. void casePaddleBall(Node *powerup_ball);
  105. /**
  106. * @brief Define a probabilidade de aparição e a geração
  107. * do power up da super-bola
  108. */
  109. void superBallAppearance();
  110. /**
  111. * @brief Caso onde o usuário pegou o power-up da super-bola
  112. *
  113. * @param powerup_ball Nó que representa o power-up
  114. */
  115. void caseSuperBall(Node *powerup_ball);
  116. /**
  117. * @brief Adiciona e joga uma nova bola na cena
  118. */
  119. void addAndThrowBall();
  120. /**
  121. * @brief Remove as bolas e os power-ups que estão na tela
  122. */
  123. void removeBallsAndPowersUP();
  124. /**
  125. * @brief Cria a bolinha que representa o power-up
  126. *
  127. * @param color Cor da bolinha
  128. * @param tag identificação da bolinha (usada no tratamento de colisões)
  129. */
  130. void createPowerUpBody(cocos2d::Color4B color, int tag);
  131. /**
  132. * @brief Cria um delay com callback que será usado na aparição dos
  133. * power-ups
  134. *
  135. * @param func função a ser chamada no callback
  136. */
  137. void delayCallback(const std::function<void ()> &func);
  138. /**
  139. * Nível atual
  140. */
  141. int level;
  142. /**
  143. * Indica se o jogo já acabou
  144. */
  145. bool over;
  146. /**
  147. * Ponteiro para a pá do jogo
  148. */
  149. Paddle * paddle;
  150. /**
  151. * Lista de bolas na cena
  152. */
  153. cocos2d::Node* balls;
  154. /**
  155. * Lista de power-ups na cena
  156. */
  157. cocos2d::Node* power_ups;
  158. /**
  159. * Tamanho da tela
  160. */
  161. double height, width; // tamanho do quadro
  162. /**
  163. * Última vez que a bola colidiu no jogo
  164. */
  165. unsigned long int last_touch;
  166. };
  167. #endif /* GameScene_h */