| 
														
															@@ -14,14 +14,14 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 USING_NS_CC; 
														 | 
														
														 | 
														
															 USING_NS_CC; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-Scene* GameScene::createScene() { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+Scene* GameScene::createScene(int level) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     auto scene = Scene::createWithPhysics(); 
														 | 
														
														 | 
														
															     auto scene = Scene::createWithPhysics(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     Size visibleSize = Director::getInstance()->getVisibleSize(); 
														 | 
														
														 | 
														
															     Size visibleSize = Director::getInstance()->getVisibleSize(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															     //choose whitch part need to draw, Joint, Shape, Contact, None or All 
														 | 
														
														 | 
														
															     //choose whitch part need to draw, Joint, Shape, Contact, None or All 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    //scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    auto layer = GameScene::create(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    GameScene* layer = GameScene::create(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     scene->addChild(layer); 
														 | 
														
														 | 
														
															     scene->addChild(layer); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															     auto material = PHYSICSBODY_MATERIAL_DEFAULT; 
														 | 
														
														 | 
														
															     auto material = PHYSICSBODY_MATERIAL_DEFAULT; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -37,6 +37,12 @@ Scene* GameScene::createScene() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     edgeNode->setPhysicsBody(body); 
														 | 
														
														 | 
														
															     edgeNode->setPhysicsBody(body); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     scene->addChild(edgeNode); 
														 | 
														
														 | 
														
															     scene->addChild(edgeNode); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    auto blocks = BlocksLayer::create(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    blocks->setLevel(level); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    blocks->setPosition(visibleSize.width/2, visibleSize.height); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    layer->addChild(blocks, 20); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+     
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    layer->setLevel(level); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return scene; 
														 | 
														
														 | 
														
															     return scene; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -54,6 +60,7 @@ bool GameScene::init() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     audio->preloadEffect("pipe.wav"); 
														 | 
														
														 | 
														
															     audio->preloadEffect("pipe.wav"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     audio->preloadEffect("metal.wav"); 
														 | 
														
														 | 
														
															     audio->preloadEffect("metal.wav"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     audio->preloadEffect("bomb.wav"); 
														 | 
														
														 | 
														
															     audio->preloadEffect("bomb.wav"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    audio->preloadEffect("win.wav"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															     auto visibleSize = Director::getInstance()->getVisibleSize(); 
														 | 
														
														 | 
														
															     auto visibleSize = Director::getInstance()->getVisibleSize(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     Vec2 origin = Director::getInstance()->getVisibleOrigin(); 
														 | 
														
														 | 
														
															     Vec2 origin = Director::getInstance()->getVisibleOrigin(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -68,10 +75,6 @@ bool GameScene::init() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ball->throwBall(); 
														 | 
														
														 | 
														
															     ball->throwBall(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     this->addChild(ball, 21); 
														 | 
														
														 | 
														
															     this->addChild(ball, 21); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    auto blocks = BlocksLayer::create(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    blocks->setPosition(visibleSize.width/2, visibleSize.height); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    this->addChild(blocks, 20); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-     
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     auto raquete = DrawNode::create(); 
														 | 
														
														 | 
														
															     auto raquete = DrawNode::create(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     float py = RAQUETE_HEIGHT/2.0; 
														 | 
														
														 | 
														
															     float py = RAQUETE_HEIGHT/2.0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     float pxl = - RAQUETE_WIDTH/2; 
														 | 
														
														 | 
														
															     float pxl = - RAQUETE_WIDTH/2; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -127,6 +130,11 @@ bool GameScene::init() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     contactListener->onContactBegin = CC_CALLBACK_1(GameScene::onContactBegin, this); 
														 | 
														
														 | 
														
															     contactListener->onContactBegin = CC_CALLBACK_1(GameScene::onContactBegin, this); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     _eventDispatcher->addEventListenerWithSceneGraphPriority(contactListener, this); 
														 | 
														
														 | 
														
															     _eventDispatcher->addEventListenerWithSceneGraphPriority(contactListener, this); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    UserDefault *userdata = UserDefault::getInstance(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    //int level = userdata->getIntegerForKey("level"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    userdata->setIntegerForKey("level", 0); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    userdata->flush(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+     
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return true; 
														 | 
														
														 | 
														
															     return true; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -135,14 +143,14 @@ bool GameScene::onContactBegin(PhysicsContact& contact) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     auto nodeB = contact.getShapeB()->getBody()->getNode(); 
														 | 
														
														 | 
														
															     auto nodeB = contact.getShapeB()->getBody()->getNode(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															     if (nodeA && nodeB && nodeA->getTag() != nodeB->getTag()) { 
														 | 
														
														 | 
														
															     if (nodeA && nodeB && nodeA->getTag() != nodeB->getTag()) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        CCLOG("%d %d", nodeB->getTag(), nodeA->getTag()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        //CCLOG("%d %d", nodeB->getTag(), nodeA->getTag()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															          
														 | 
														
														 | 
														
															          
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // sempre B < A 
														 | 
														
														 | 
														
															         // sempre B < A 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         if (nodeB->getTag() == BLOCK_TAG) { 
														 | 
														
														 | 
														
															         if (nodeB->getTag() == BLOCK_TAG) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             auto audio = CocosDenshion::SimpleAudioEngine::getInstance(); 
														 | 
														
														 | 
														
															             auto audio = CocosDenshion::SimpleAudioEngine::getInstance(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             audio->playEffect("pipe.wav"); 
														 | 
														
														 | 
														
															             audio->playEffect("pipe.wav"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             nodeB->removeFromParentAndCleanup(true); 
														 | 
														
														 | 
														
															             nodeB->removeFromParentAndCleanup(true); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        } if (nodeB->getTag() == INDESTRUCTIBLE_BLOCK_TAG) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } else if (nodeB->getTag() == INDESTRUCTIBLE_BLOCK_TAG) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             auto audio = CocosDenshion::SimpleAudioEngine::getInstance(); 
														 | 
														
														 | 
														
															             auto audio = CocosDenshion::SimpleAudioEngine::getInstance(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             audio->playEffect("metal.wav"); 
														 | 
														
														 | 
														
															             audio->playEffect("metal.wav"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } else if (nodeB->getTag() == BOTTOM_TAG && nodeA->getTag() == BALL_TAG) { 
														 | 
														
														 | 
														
															         } else if (nodeB->getTag() == BOTTOM_TAG && nodeA->getTag() == BALL_TAG) { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -162,6 +170,14 @@ void GameScene::ball_collision (Node *ball) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     text->setPosition(visibleSize.width/2, visibleSize.height/2); 
														 | 
														
														 | 
														
															     text->setPosition(visibleSize.width/2, visibleSize.height/2); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     this->addChild(text); 
														 | 
														
														 | 
														
															     this->addChild(text); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    this->level = -1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    auto menu_item_start = MenuItemFont::create("Restart", CC_CALLBACK_1(GameScene::NextLevel, this)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    menu_item_start->setPosition(text->getPosition()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    menu_item_start->setPositionY(menu_item_start->getPositionY()-50); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    auto *menu = Menu::create(menu_item_start, NULL); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    menu->setPosition(Point(0, 0)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    this->addChild(menu, 30); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+     
														 | 
													
												
											
												
													
														| 
														 | 
														
															     auto audio = CocosDenshion::SimpleAudioEngine::getInstance(); 
														 | 
														
														 | 
														
															     auto audio = CocosDenshion::SimpleAudioEngine::getInstance(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     audio->playEffect("bomb.wav"); 
														 | 
														
														 | 
														
															     audio->playEffect("bomb.wav"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ParticleSun* m_emitter = ParticleSun::create(); 
														 | 
														
														 | 
														
															     ParticleSun* m_emitter = ParticleSun::create(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -175,6 +191,8 @@ void GameScene::ball_core (Node *core, Node *ball) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     auto scaleBy = ScaleBy::create(1.0f, 20.0f); 
														 | 
														
														 | 
														
															     auto scaleBy = ScaleBy::create(1.0f, 20.0f); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     core->getPhysicsBody()->setEnabled(false); 
														 | 
														
														 | 
														
															     core->getPhysicsBody()->setEnabled(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     core->runAction(scaleBy); 
														 | 
														
														 | 
														
															     core->runAction(scaleBy); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    auto audio = CocosDenshion::SimpleAudioEngine::getInstance(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    audio->playEffect("win.wav"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															     auto callbackRotate = CallFunc::create([=](){ 
														 | 
														
														 | 
														
															     auto callbackRotate = CallFunc::create([=](){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         auto visibleSize = Director::getInstance()->getVisibleSize(); 
														 | 
														
														 | 
														
															         auto visibleSize = Director::getInstance()->getVisibleSize(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -192,7 +210,17 @@ void GameScene::ball_core (Node *core, Node *ball) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 void GameScene::NextLevel(cocos2d::Ref *pSender) { 
														 | 
														
														 | 
														
															 void GameScene::NextLevel(cocos2d::Ref *pSender) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    auto scene = GameScene::createScene(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    auto scene = GameScene::createScene(this->level + 1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     Director::getInstance()->replaceScene(scene); 
														 | 
														
														 | 
														
															     Director::getInstance()->replaceScene(scene); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     //Director::getInstance()->end(); 
														 | 
														
														 | 
														
															     //Director::getInstance()->end(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void GameScene::setLevel(int level) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    this->level = level; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    char level_text[256]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    sprintf(level_text,"Level %d", this->level); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    auto text = Label::createWithTTF(level_text, "fonts/Marker Felt.ttf", 30); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    text->setAnchorPoint(Vec2()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    text->setPosition(10, 10); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    this->addChild(text); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 |