void gameClass::update(float deltaTime) {
		
	if (newLevel)
		{
		currentLevel++;
		enemies.clear();
		projectiles.clear();
		player->tile.resetPos(mapLevel[currentLevel].getEntrancePos());
		renderer->resetCam(player->tile.getPos(), player->tile.getSize());
		newLevel = false;
	}

	renderer->getCam(renderingPort.x, renderingPort.y);
	renderingPort *= -1;

	spawnTimer += deltaTime;
	projectileTimer += deltaTime;

	moveEnemies(deltaTime);

	if (spawnTimer > Constants::spawnRate) {
		spawnEnemies();
		spawnTimer = 0;
	}

	moveProjectiles(deltaTime);
	
	if(player->getHealth() <= 0)
	{
		if(!isPlayerDead)
		{
			animationTime = 0.0f;
			player->resetIndex();
			isPlayerDead = true;
			player->setCurrentAction("tipping over");
			SoundEngine->play2D("audio/Sound Effect (31).wav", GL_FALSE);
		}

		animationTime += deltaTime;

		if (animationTime >= Constants::animationFrameTime) 
		{
			animationTime = 0.0f;
			player->increaseIndex();
		}
	}
}
Example #2
0
 void ProjectileManager::update(float dt)
 {
     moveProjectiles(dt);
     moveMagicBolts(dt);
 }
Example #3
0
void gameLoop(){
	while(1) {
		secsElapsed = (float)(clock() - startTime)/CLOCKS_PER_SEC;
		moveProjectiles();
		updateViewportWin();
		if((float)(clock() - timerStart)/CLOCKS_PER_SEC > 1){
			tryRandomEvent();
			timerStart=clock();
		}
		if((int)secsElapsed%10){
			zombieModifier++;
		}
		moveZombies();
		updateViewportWin();
		updateInfoWin();
		doupdate();
		int ch;
		ch = getch();
		switch(ch){
			case 'w':
			case 'W':{
				struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos-1,allEntities[0].curXpos);
				if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
					allEntities[0].prevXpos=allEntities[0].curXpos;
					allEntities[0].prevYpos=allEntities[0].curYpos;
					allEntities[0].curYpos--;
				};
				break;
			}
			case 's':	
			case 'S':{
				struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos+1,allEntities[0].curXpos);
				if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
					allEntities[0].prevXpos=allEntities[0].curXpos;
					allEntities[0].prevYpos=allEntities[0].curYpos;
					allEntities[0].curYpos++;
				};
				break;
			}
			case 'a':
			case 'A':{
				struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos,allEntities[0].curXpos-1);
				if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
					allEntities[0].prevYpos=allEntities[0].curYpos;
					allEntities[0].prevXpos=allEntities[0].curXpos;
					allEntities[0].curXpos--;
				};
				break;
			}
			case 'd':
			case 'D':{
				struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos,allEntities[0].curXpos+1);
				if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
					allEntities[0].prevYpos=allEntities[0].curYpos;
					allEntities[0].prevXpos=allEntities[0].curXpos;
					allEntities[0].curXpos++;
				};
				break;
			}
			case KEY_UP:{
				if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 0){
					fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "up");
				}
				break;
			}
			case KEY_LEFT:{
				if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 0){
					fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "left");
				}
				break;
			}
			case KEY_DOWN:{
				if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 0){
					fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "down");
				}
				break;
			}
			case KEY_RIGHT:{
				if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 0){
					fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "right");
				}
				break;
			}
			case 'r':
			case 'R':{
				if(allEntities[0].weapons[allEntities[0].curWeapon].curMags > 0 && allEntities[0].weapons[allEntities[0].curWeapon].curCapacity < allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity ){
					reload(&allEntities[0].weapons[allEntities[0].curWeapon]);
				}
				break;
			}
			case '0':{
				allEntities[0].curWeapon=0;
				break;
			}
			case '1':{
				if(allEntities[0].weapons[1].isAlive){
					allEntities[0].curWeapon=1;
				}
				break;
			}
			case '2':{
				if(allEntities[0].weapons[2].isAlive){
					allEntities[0].curWeapon=2;
				}
				break;
			}
			case '3':{
				if(allEntities[0].weapons[3].isAlive){
					allEntities[0].curWeapon=3;
				}
				break;
			}
			case '4':{
				if(allEntities[0].weapons[4].isAlive){
					allEntities[0].curWeapon=4;
				}
				break;
			}
			default:
				allEntities[0].prevYpos=allEntities[0].curYpos;
				allEntities[0].prevXpos=allEntities[0].curXpos;
				break;
		}
		if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity==0 && allEntities[0].weapons[allEntities[0].curWeapon].curMags==0){
			allEntities[0].curWeapon=0;
		}
		updateViewportWin();
		checkPlayerCollision();
		updateViewportWin();
	}
}