void AudionManager::preloadGameAudios() { rapidjson::Value& audioObj = getAudioConfig(); for(rapidjson::Value::MemberIterator it = audioObj.MemberBegin(); it != audioObj.MemberEnd(); it++) { const char* value = (it->value).GetString(); preloadAudio(value); } }
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; }