Exemplo n.º 1
0
void CheckCollisions()
{

	size_t nEnems = redCones.size();
	for(int enemInd = nEnems-1; enemInd>=0; enemInd--) {
		AABoundingBox enemBox = redCones[enemInd].GetAABB();
		size_t nBulls = game.heroBullets.size();
		Bullet b(redCones[enemInd].p, redCones[enemInd].v);
		b.pinit = redCones[enemInd].pinit;
		b.vinit = redCones[enemInd].vinit;
		for(int bullInd = nBulls-1; bullInd>=0; bullInd--) {
			if(game.heroBullets[bullInd].GetAABB().IntersectsWith(enemBox)) {
				//game.healthPCs.push_back(HealthPacket(enemBox.Center, 20));
				//greenBullets.push_back(b);
				game.heroBullets.erase(game.heroBullets.begin() + bullInd);
				redCones.erase(redCones.begin() + enemInd);
				game.heroScore += 100;
				break;
			}
		}
	}

	//Check collisons with green bullets
	AABoundingBox heroBox(game.GetHeroPos(), Vector3(10, 10, 10));
	size_t numGB = greenBullets.size();
	for(int i=numGB-1; i>=0; i--) {
		AABoundingBox hpBox = greenBullets[i].GetAABB();
		if(hpBox.IntersectsWith(heroBox)) {
			greenBullets.erase(greenBullets.begin() + i);
			game.heroHealth += 20;
			//game.healthPCs.erase(game.healthPCs.begin() + i);
		}
	}
	//Check hero collisons
	size_t redConesCount = redCones.size();
	for(int bInd = redConesCount-1; bInd>=0; bInd--) 
		if(redCones[bInd].GetAABB().IntersectsWith(heroBox)) {
			game.heroHealth = max(game.heroHealth - 20, 0);
			redCones.erase(redCones.begin() + bInd);
			if(game.heroHealth == 0) game.gameOver = true;
		}

		AdvancedBulletsWithRedCones();

	//size_t greenBulletsCount = greenBullets.size();
	//for( greenBulletsCount = greenBulletsCount-1; greenBulletsCount>=0; greenBulletsCount--) {
	//	for(int bullInd = nBulls-1; bullInd>=0; bullInd--) {
	//		AABoundingBox greenBuleetBox = greenBullets[greenBulletsCount].GetAABB();
	//		if(game.heroBullets[bullInd].GetAABB().IntersectsWith(greenBuleetBox)) {
	//			//game.healthPCs.push_back(HealthPacket(enemBox.Center, 20));
	//			
	//			size_t nBulls = game.heroBullets.size();
	//			RedCone rc(greenBullets[greenBulletsCount].P, greenBullets[greenBulletsCount].V);
	//			rc.pinit = greenBullets[greenBulletsCount].pinit;
	//			rc.vinit = greenBullets[greenBulletsCount].vinit;
	//			redCones.push_back(rc);
	//			game.heroBullets.erase(game.heroBullets.begin() + bullInd);
	//			greenBullets.erase(greenBullets.begin() + greenBulletsCount);
	//			game.heroScore -= 20;
	//			break;
	//		}
	//	}
	//}
		
}