Browse Source

Fazrendo funcao para chmar callbacks do powers ups

capellaresumo 7 years ago
parent
commit
ea36df7f4a

+ 12 - 16
Classes/GameScene.cpp

@@ -263,10 +263,7 @@ void GameScene::saveLevel() {
     if (rand_0_1() < DROP_LEVEL_SAVE)
         createPowerUpBody(COLOR_green, SAVE_TAG);
 
-    auto delay = DelayTime::create(POWER_UP_INTERVAL);
-    CallFunc *runCallback = CallFunc::create(CC_CALLBACK_0(GameScene::saveLevel, this));
-    auto seq = Sequence::create(delay, runCallback, nullptr);
-    runAction(seq);
+    delayCallback(CC_CALLBACK_0(GameScene::saveLevel, this));
 }
 
 // Power-up: deixa 3 bolas na tela ao invés de 1
@@ -279,10 +276,7 @@ void GameScene::tripleBallsAppearance() {
         createPowerUpBody(COLOR_pink, THREE_BALLS_TAG);
     }
     
-    auto delay = DelayTime::create(POWER_UP_INTERVAL);
-    CallFunc *runCallback = CallFunc::create(CC_CALLBACK_0(GameScene::tripleBallsAppearance, this));
-    auto seq = Sequence::create(delay, runCallback, nullptr);
-    runAction(seq);
+    delayCallback(CC_CALLBACK_0(GameScene::tripleBallsAppearance, this));
 }
 
 void GameScene::caseTripleBalls(Node *powerup_ball) {
@@ -298,10 +292,7 @@ void GameScene::paddleBallAppearance() {
     if (rand_0_1() < DROP_PADDLE_BALL && over == false)
         createPowerUpBody(COLOR_blue, PADDLE_BALL_TAG);
     
-    auto delay = DelayTime::create(POWER_UP_INTERVAL);
-    CallFunc *runCallback = CallFunc::create(CC_CALLBACK_0(GameScene::paddleBallAppearance, this));
-    auto seq = Sequence::create(delay, runCallback, nullptr);
-    runAction(seq);
+    delayCallback(CC_CALLBACK_0(GameScene::paddleBallAppearance, this));
 }
 
 /* Power-up/down: 50% de chance de dobrar o tamanho da paddle,
@@ -337,10 +328,7 @@ void GameScene::superBallAppearance() {
     if (rand_0_1() < DROP_SUPER_BALL)
         createPowerUpBody(COLOR_orange, SUPERBALL_TAG);
     
-    auto delay = DelayTime::create(POWER_UP_INTERVAL);
-    CallFunc *runCallback = CallFunc::create(CC_CALLBACK_0(GameScene::superBallAppearance, this));
-    auto seq = Sequence::create(delay, runCallback, nullptr);
-    runAction(seq);
+    delayCallback(CC_CALLBACK_0(GameScene::superBallAppearance, this));
 }
 
 void GameScene::caseSuperBall(Node *powerup_ball) {
@@ -376,3 +364,11 @@ void GameScene::createPowerUpBody(Color4B color, int tag) {
     ball_draw->setPosition(width * rand_0_1(), height);
     power_ups->addChild(ball_draw, 20);
 }
+
+void GameScene::delayCallback(const std::function<void ()> &func) {
+    auto delta = POWER_UP_INTERVAL/4.0 * rand_minus1_1();
+    auto delay = DelayTime::create(POWER_UP_INTERVAL+delta);
+    CallFunc *runCallback = CallFunc::create(func);
+    auto seq = Sequence::create(delay, runCallback, nullptr);
+    runAction(seq);
+}

+ 1 - 0
Classes/GameScene.h

@@ -35,6 +35,7 @@ class GameScene : public cocos2d::Layer {
         void addAndThrowBall();
         void removeBallsAndPowersUP();
         void createPowerUpBody(cocos2d::Color4B color, int tag);
+        void delayCallback(const std::function<void ()> &func);
         int level;
         bool over; // salva se o jogo acabou!
         Paddle * paddle;

BIN
proj.ios_mac/RedCore.xcodeproj/project.xcworkspace/xcuserdata/capella.xcuserdatad/UserInterfaceState.xcuserstate