void initialize()
{
	hasSavePoint = false;
	if (currLevel == 0){
		//glutSetCursor(GLUT_CURSOR_NONE);
		setMouse(win1.width / 2, win1.height / 2);
		updateProjection(win1);
	}
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_CULL_FACE);
	glCullFace(GL_BACK);
	glClearColor(0.0, 0.0, 0.0, 1.0);											// specify clear values for the color buffers	
	loadImages();
	levels[currLevel] = new Level(currLevel + 1);
	Stamina = 100;
	makeEntites();
	levelEdges = levels[currLevel]->getEdges();
	
	camera1 = new Camera(Vector3(levels[currLevel]->startPoint->x, 2, levels[currLevel]->startPoint->y), findPosition(levels[currLevel]), Vector3(0, 1, 0));
	if (levels[currLevel]->startNode->left || levels[currLevel]->startNode->right){
		cylinder1.yaw(90);
	}
	startPlayer = cylinder1;
	resetEnemies();
	sound = new Sound();
	sound->Load();
	sound->Play(SOUND_MUSIC1);
	
}
Beispiel #2
0
void reset()
{
  playerLevel = 1;
  playerScore = 0;
  currentWave = 0;
  waveCount = 0;
  inWave = false;
  resetEnemies();

  levelUpTimer = 0;
  mainMessageTimer = 0;
}
//detects player - enemy collision
void checkEnemyCollision(){
	for (int i = 0; i < 30; i++){
		if (enemies[i]->getAlive()){
			if (dist2(v2(enemies[i]->getPosition().x, enemies[i]->getPosition().z), v2(camera1->getPosition().x, camera1->getPosition().z)) < 14){
				if (camera1->getPosition().y > 5){
					enemies[i]->setAlive(false);
					camera1->gravity = 0.25;
					jumping = true;
					PlaySound(TEXT("splat.wav"), NULL, SND_FILENAME | SND_ASYNC);		
				}
				else{
					resetEnemies();
					PlaySound(TEXT("death.wav"), NULL, SND_FILENAME | SND_ASYNC);
					Stamina = 100;
					camera1 = new Camera(Vector3(levels[currLevel]->startPoint->x, 2, levels[currLevel]->startPoint->y), findPosition(levels[currLevel]), Vector3(0, 1, 0));
					cylinder1 = startPlayer;
					State = "Loading";					
				}
			}
		}
	}
}
//moves every enemy in the enemy lists;
//if the enemy is "inactive" (usually zero health)
//the enemy is taken out of the list
//and particles are created;
//touching players will destroy the player.
void EnemySystem::moveEnemies(ProjectileSystem &ps, Player &player, ParticleSystem &pas, SDL_Renderer *renderer)
{
	for (int x = 0; x < fEnemyList.size(); x++)
	{
		if (fEnemyList[x].getStatus() == true)
		{
			fEnemyList[x].getDirection(player);
			fEnemyList[x].move(player);
		}
		else
		{
			pas.CreateBurst(fEnemyList[x].getX(), fEnemyList[x].getY(), 25, renderer);
			fEnemyList.erase(fEnemyList.begin() + x);
			shakeIntensity += 25;
		}
	}
	for (int x = 0; x < bEnemyList.size(); x++)
	{
		if (bEnemyList[x].getStatus() == true)
		{
			bEnemyList[x].move();
		}
		else
		{
			pas.CreateBurst(bEnemyList[x].getX(), bEnemyList[x].getY(), 25, renderer);
			bEnemyList.erase(bEnemyList.begin() + x);
			shakeIntensity += 25;
		}
	}


	for (int x = 0; x < fEnemyList.size(); x++)
	{
		for (int y = 0; y < ps.getList().size(); y++)
		{
			//SDL built-in rectangle collision detection
			if (SDL_HasIntersection(&fEnemyList[x].getCollisionBox(), &ps.getList()[y].getCollisionBox()) == SDL_TRUE)
			{
				fEnemyList[x].loseHealth(ps.getList()[y].getDamage());
				ps.getList()[y].active = 0;
				shakeIntensity += 5;
				pas.CreateBurst(ps.getList()[y].getX(), ps.getList()[y].getY(), 3, renderer);
			}
		}
		if (SDL_HasIntersection(&fEnemyList[x].getCollisionBox(), &player.getCollision()) == SDL_TRUE && player.getActive() == true)
		{
			//destroy player, destroy all enemies and increase enemy spawn timer
			resetEnemies(renderer, player, pas);
		}
	}

	for (int x = 0; x < bEnemyList.size(); x++)
	{
		for (int y = 0; y < ps.getList().size(); y++)
		{
			if (SDL_HasIntersection(&bEnemyList[x].getCollisionBox(), &ps.getList()[y].getCollisionBox()) == SDL_TRUE)
			{
				bEnemyList[x].loseHealth(ps.getList()[y].getDamage());
				ps.getList()[y].active = 0;
				shakeIntensity += 5;
				pas.CreateBurst(ps.getList()[y].getX(), ps.getList()[y].getY(), 3, renderer);
			}
		}
		if (SDL_HasIntersection(&bEnemyList[x].getCollisionBox(), &player.getCollision()) == SDL_TRUE && player.getActive() == true)
		{
			resetEnemies(renderer, player, pas);
		}
	}

	reduceDelay--;
	if (spawnReset > 40 && reduceDelay <= 0)
	{
		spawnReset -= 4;
		reduceDelay = 150;
		std::cout << spawnReset << std::endl;
	}

}