Beispiel #1
0
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);
    }
}
Beispiel #2
0
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;
}