|
@@ -48,6 +48,13 @@ bool GameScene::init() {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ FileUtils::getInstance()->addSearchPath("res");
|
|
|
+ auto audio = CocosDenshion::SimpleAudioEngine::getInstance();
|
|
|
+ audio->preloadEffect("pipe.wav");
|
|
|
+ audio->preloadEffect("metal.wav");
|
|
|
+ audio->preloadEffect("bomb.wav");
|
|
|
+
|
|
|
auto visibleSize = Director::getInstance()->getVisibleSize();
|
|
|
Vec2 origin = Director::getInstance()->getVisibleOrigin();
|
|
|
|
|
@@ -130,12 +137,14 @@ bool GameScene::onContactBegin(PhysicsContact& contact) {
|
|
|
if (nodeA && nodeB && nodeA->getTag() != nodeB->getTag()) {
|
|
|
CCLOG("%d %d", nodeB->getTag(), nodeA->getTag());
|
|
|
|
|
|
- if (nodeA->getTag() == BLOCK_TAG) {
|
|
|
- nodeA->removeFromParentAndCleanup(true);
|
|
|
- } else if (nodeB->getTag() == BLOCK_TAG) {
|
|
|
+
|
|
|
+ if (nodeB->getTag() == BLOCK_TAG) {
|
|
|
+ auto audio = CocosDenshion::SimpleAudioEngine::getInstance();
|
|
|
+ audio->playEffect("pipe.wav");
|
|
|
nodeB->removeFromParentAndCleanup(true);
|
|
|
- } else if (nodeA->getTag() == BOTTOM_TAG && nodeB->getTag() == BALL_TAG) {
|
|
|
- ball_collision(nodeB);
|
|
|
+ } if (nodeB->getTag() == INDESTRUCTIBLE_BLOCK_TAG) {
|
|
|
+ auto audio = CocosDenshion::SimpleAudioEngine::getInstance();
|
|
|
+ audio->playEffect("metal.wav");
|
|
|
} else if (nodeB->getTag() == BOTTOM_TAG && nodeA->getTag() == BALL_TAG) {
|
|
|
ball_collision(nodeA);
|
|
|
} else if (nodeB->getTag() == CORE_TAG && nodeA->getTag() == BALL_TAG) {
|
|
@@ -144,11 +153,17 @@ bool GameScene::onContactBegin(PhysicsContact& contact) {
|
|
|
ball_core(nodeA, nodeB);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
void GameScene::ball_collision (Node *ball) {
|
|
|
+ auto visibleSize = Director::getInstance()->getVisibleSize();
|
|
|
+ auto text = Label::createWithTTF("Game Over...", "fonts/Marker Felt.ttf", 40);
|
|
|
+ text->setPosition(visibleSize.width/2, visibleSize.height/2);
|
|
|
+ this->addChild(text);
|
|
|
+
|
|
|
+ auto audio = CocosDenshion::SimpleAudioEngine::getInstance();
|
|
|
+ audio->playEffect("bomb.wav");
|
|
|
ParticleSun* m_emitter = ParticleSun::create();
|
|
|
m_emitter->setPosition(ball->getPosition());
|
|
|
m_emitter->setDuration(1);
|
|
@@ -163,7 +178,7 @@ void GameScene::ball_core (Node *core, Node *ball) {
|
|
|
|
|
|
auto callbackRotate = CallFunc::create([=](){
|
|
|
auto visibleSize = Director::getInstance()->getVisibleSize();
|
|
|
- auto menu_item_start = MenuItemFont::create("Next Level");
|
|
|
+ auto menu_item_start = MenuItemFont::create("Next Level", CC_CALLBACK_1(GameScene::NextLevel, this));
|
|
|
menu_item_start->setPosition(Point(visibleSize.width / 2, (visibleSize.height / 2)));
|
|
|
auto *menu = Menu::create(menu_item_start, NULL);
|
|
|
menu->setPosition(Point(0, 0));
|
|
@@ -175,3 +190,9 @@ void GameScene::ball_core (Node *core, Node *ball) {
|
|
|
core->runAction(seq);
|
|
|
ball->removeFromParentAndCleanup(true);
|
|
|
}
|
|
|
+
|
|
|
+void GameScene::NextLevel(cocos2d::Ref *pSender) {
|
|
|
+ auto scene = GameScene::createScene();
|
|
|
+ Director::getInstance()->replaceScene(scene);
|
|
|
+
|
|
|
+}
|