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(); } } }
void ProjectileManager::update(float dt) { moveProjectiles(dt); moveMagicBolts(dt); }
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(); } }