bool LevelTwo::init() { if (!Layer::init()) { return false; } preloadAudio(); //playAudio(); //Audio stuff created here. //CocosDenshion::SimpleAudioEngine::getInstance()->preloadBackgroundMusic("audio/main.mp3"); CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("audio/main.mp3", true); //GameState initial setting. //m_gameState = GameStates::PlaceGunTower; //Listeners for touch events created. auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(LevelTwo::onTouchesBegan, this); listener->onTouchesMoved = CC_CALLBACK_2(LevelTwo::onTouchesMoved, this); listener->onTouchesEnded = CC_CALLBACK_2(LevelTwo::onTouchesEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); bool dir; bool jump = true; bool removeTraps = false; bool addPlatfroms = false; //Edge body created. Adding screen Boundry. /*auto edgeBody = PhysicsBody::createEdgeBox(visibleSize, PHYSICSBODY_MATERIAL_DEFAULT, 1); auto edgeNode = Node::create(); edgeNode->setPosition(Point(2000 / 2 + origin.x, 2000 / 2 + origin.y)); edgeNode->setPhysicsBody(edgeBody); this->addChild(edgeNode); */ //Pause Button Creation auto pauseItem = MenuItemImage::create("GameScreen/Pause_Button.png", "GameScreen/Pause_Button(Click).png", CC_CALLBACK_1(LevelTwo::activatePauseScene, this)); //Set Pause button position pauseItem->setPosition(Point(pauseItem->getContentSize().width - (pauseItem->getContentSize().width / 4) + 20, visibleSize.height - pauseItem->getContentSize().height + (pauseItem->getContentSize().width / 4) - 20)); pauseItem->setScale(2); //Attach the pause button to the screen auto menu = Menu::create(pauseItem, NULL); menu->setPosition(Point::ZERO); this->addChild(menu, 10); //......................................................................................... //DPad //LeftButton to move the player. auto leftbutton = ui::Button::create("GameScreen/leftButtonIdle.png", "GameScreen/leftbuttonActive.png"); leftbutton->setPosition(Vec2(origin.x + visibleSize.width / 10, origin.y + visibleSize.height / 6)); leftbutton->setScale(2); leftbutton->addTouchEventListener([&](Ref* sender, ui::Widget::TouchEventType type) { switch (type) { case ui::Widget::TouchEventType::BEGAN: //handleTouch(this); //player->getPhysicsBody()->applyForce(Vec2(1000, 0)); //player->getPhysicsBody()->setDynamic(true); dir = true; if (player1Selected == true) { player->pMovement(player, dir); } if (player2Selected == true) { player2->p2Movement(player2, dir); } break; case ui::Widget::TouchEventType::ENDED: player->getPhysicsBody()->setVelocity(Vec2(0, 0)); player2->getPhysicsBody()->setVelocity(Vec2(0, 0)); break; default: break; } }); this->addChild(leftbutton, 10); //RightButton to move the player. auto rightbutton = ui::Button::create("GameScreen/rightButtonIdle.png", "GameScreen/rightbuttonActive.png"); rightbutton->setPosition(Vec2(origin.x + visibleSize.width / 6, origin.y + visibleSize.height / 6)); rightbutton->setScale(2); rightbutton->addTouchEventListener([&](Ref* sender, ui::Widget::TouchEventType type) { switch (type) { case ui::Widget::TouchEventType::BEGAN: //handleTouch(this); //player->getPhysicsBody()->applyForce(Vec2(1000, 0)); dir = false; if (player1Selected == true) { player->pMovement(player, dir); } if (player2Selected == true) { player2->p2Movement(player2, dir); } break; case ui::Widget::TouchEventType::ENDED: player->getPhysicsBody()->setVelocity(Vec2(0, 0)); player2->getPhysicsBody()->setVelocity(Vec2(0, 0)); break; default: break; } }); this->addChild(rightbutton, 10); int stop; //JumpButton to move the player. auto jumpbutton = ui::Button::create("GameScreen/jumpButtonIdle.png", "GameScreen/jumpButtonActive.png"); jumpbutton->setPosition(Vec2(origin.x + visibleSize.width - 100, origin.y + visibleSize.height / 6)); jumpbutton->setScale(2); jumpbutton->addTouchEventListener([&](Ref* sender, ui::Widget::TouchEventType type) { switch (type) { case ui::Widget::TouchEventType::BEGAN: //handleTouch(this); CCLOG("Jump button has been pressed"); //player->getPhysicsBody()->applyForce(Vec2(1000, 0)); if (player1Selected == true) { CCLOG("I've entered the jump if statement!"); player->pJump(p1Jumped, player); p1Jumped = true; playJumpSound = true; } if (player2Selected == true) { CCLOG("I've entered the jump if statement!"); player2->p2Jump(p2Jumped, player2); p2Jumped = true; playJumpSound = true; } break; case ui::Widget::TouchEventType::ENDED: break; default: break; } }); this->addChild(jumpbutton, 10); addEvents(); /*TowerBase * base = TowerBase::create(Vec2(ptr->m_towerBaseX[i], ptr->m_towerBaseY[i]), m_gameState); m_towerBases.push_back(base); spritebatch->addChild(base, -5);*/ //Player select auto p1Select = MenuItemImage::create("GameScreen/p1Idle.png", "GameScreen/p1Select.png", CC_CALLBACK_0(LevelTwo::playerOneSelected, this)); p1Select->setScale(2); p1Select->setPosition(Vec2((origin.x + visibleSize.width / 2) - 20, origin.y + visibleSize.height / 10)); //this->addChild(p1Select, 5); auto p2Select = MenuItemImage::create("GameScreen/p2Idle.png", "GameScreen/p2Select.png", CC_CALLBACK_0(LevelTwo::playerTwoSelected, this)); p2Select->setScale(2); p2Select->setPosition(Vec2((origin.x + visibleSize.width / 2) + 20, origin.y + visibleSize.height / 10)); auto selectMenu = Menu::create(p1Select, p2Select, NULL); selectMenu->setPosition(Point::ZERO); this->addChild(selectMenu, 5); //Player Stuff Just testing stuff. Cut me some slack, Man! //Player One creation g and attachment ot the scene //Check player.cpp for Physics details. player = Player::create(); player->setPosition(Vec2(20, 400)); this->addChild(player, 0); //Same comment applies for player two as player one! player2 = Player2::create(); player2->setPosition(Vec2(70, 400)); this->addChild(player2, 0); //BackGround addBackGroundSprite(visibleSize, origin); //Create the Tower base. I'll be repurposing these for my level bases! //Needs to be done urgently! createPlatforms(); createTraps(); //createEndGame(); createEndGameJack(); createEndGameJill(); createButton(); createRemovablePlats(); createFlameEmiiter(); //Camera stuff......................................... auto camScene = Camera::create(); camScene->setCameraFlag(CameraFlag::USER1); //HUD layer auto hud = Layer::create(); hud->addChild(p2Select, 10); hud->addChild(p1Select, 10); //hud->addChild(selectMenu, 10); hud->addChild(jumpbutton, 10); hud->addChild(rightbutton, 10); hud->addChild(leftbutton, 10); hud->addChild(menu, 10); hud->setCameraMask((unsigned short)CameraFlag::USER1); this->addChild(camScene); auto contactListener = EventListenerPhysicsContact::create(); contactListener->onContactBegin = CC_CALLBACK_1(LevelTwo::onContactBegin, this); this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(contactListener, this); cameraTarget = Sprite::create(); cameraTarget->setPosition(player->getPositionX(), player->getPositionY()); this->addChild(cameraTarget); camera = Follow::create(cameraTarget, Rect::ZERO); camera->retain(); this->runAction(camera); this->scheduleUpdate(); return true; }
bool Tutorial::init() { if (!Layer::init()) { return false; } //LevelLoader::getInstance()->load("data/Level2.json"); CocosDenshion::SimpleAudioEngine::getInstance()->setEffectsVolume(1.0f); m_gameState = GameStates::PlaceGunTower; move = true; CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("audio/scoreSound.mp3"); CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("audio/crashSound.mp3"); Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); powerUpBool = false; pauseItem = MenuItemImage::create("GameScreen/Pause_Button.png", "GameScreen/Pause_Button(Click).png", CC_CALLBACK_1(Tutorial::activatePauseScene, this)); pauseItem->setPosition(22, 520); auto menu = Menu::create(pauseItem, NULL); menu->setPosition(Point::ZERO); this->addChild(menu, 100); player = Player::create(); player->setPosition(195, 125); player->setAnchorPoint(Point(0.5f, 0.55f)); this->addChild(player,5); powerUp = PowerUp::create(2); powerUp->setPosition(195,5775); this->addChild(powerUp); addBackGroundSprite(visibleSize, origin); createTowerBases(); createCoins(); createPolice(); createAmbulances(); //createMTrucks(); //createTrucks(); //createBikes(); auto director = Director::getInstance(); auto glview = director->getOpenGLView(); auto screenSize = glview->getFrameSize(); //checks for movement on the device that will be use to move the car Device::setAccelerometerEnabled(true); auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(Tutorial::OnAcceleration, this)); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); //checks for collisions between two objects with physics bodies auto contactListener = EventListenerPhysicsContact::create(); contactListener->onContactBegin = CC_CALLBACK_1(Tutorial::onContactBegin, this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(contactListener, this); //sets up the camera that will follow the player as it moves up the screen cameraTarget = Sprite::create(); cameraTarget->setPositionX(visibleSize.width / 2); cameraTarget->setPositionY(player->getPosition().y - 115); this->scheduleUpdate(); this->addChild(cameraTarget); camera = Follow::create(cameraTarget, Rect::ZERO); camera->retain(); this->runAction(camera); return true; }
bool Level1::init() { auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = CC_CALLBACK_2(Level1::onTouchBegan, this); listener->onTouchEnded = CC_CALLBACK_2(Level1::onTouchEnded, this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this); auto pauseItem = MenuItemImage::create("GameScreen/Pause_Button.png", "GameScreen/Pause_Button(Click).png", CC_CALLBACK_1(Level1::activatePauseScene, this)); Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); CCSize s = CCDirector::sharedDirector()->getWinSize(); pauseItem->setPosition(Point(pauseItem->getContentSize().width - (pauseItem->getContentSize().width / 4) + origin.x, visibleSize.height - pauseItem->getContentSize().height + (pauseItem->getContentSize().width / 4) + origin.y)); auto menu = Menu::create(pauseItem, NULL); menu->setPosition(Point::ZERO); this->addChild(menu); CCLabelTTF* ttf1 = CCLabelTTF::create("Level 1", "Ninja Penguin.ttf", 30, CCSizeMake(245, 32), kCCTextAlignmentCenter); switch (level) { case 'A': addBackGroundSprite(visibleSize, origin); boss = Boss::create(); boss->setPosition(Vec2(300, 350)); this->addChild(boss, 5); player = Player::create(); player->setPosition(Vec2(100, 70)); this->addChild(player, 5); ttf1->setPosition(Vec2(s.width / 2, s.height - 30)); ttf1->setColor(Color3B(0, 0, 0)); this->addChild(ttf1, 4); CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("GameMusic.wav", true); break; case 'B': auto mySprite = Sprite::create("GameScreen/Background2.png"); mySprite->setScaleX((s.width / mySprite->getContentSize().width)); mySprite->setScaleY((s.height / mySprite->getContentSize().height)); // bottom left mySprite->setAnchorPoint(cocos2d::Vec2(0, 0)); this->addChild(mySprite, -1); boss2 = Boss2::create(); this->addChild(boss2, 5); boss2->setPosition(Vec2(s.width / 2, s.height / 2)); CCLabelTTF* ttf2 = CCLabelTTF::create("Level 2", "Ninja Penguin.ttf", 30, CCSizeMake(245, 32), kCCTextAlignmentCenter); ttf2->setPosition(Vec2(s.width / 2, s.height - 30)); ttf2->setColor(Color3B(0, 0, 0)); this->addChild(ttf2, 4); break; } this->scheduleUpdate(); auto contactListener = EventListenerPhysicsContact::create(); contactListener->onContactBegin = CC_CALLBACK_1(Level1::onContactBegin, this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(contactListener, this); return true; }