|
@@ -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));
|
|
|
}
|
|
|
|
|
|
|
|
@@ -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));
|
|
|
}
|
|
|
|
|
|
|
|
@@ -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);
|
|
|
+}
|