void GameSession::run(LevelDefinitionBase* level) { _levelDefinition = level; startLevel(); const Pad& pad = Hardware::getPad(); while (isRunning()) { checkLevelComplete(); animate(); timer(); move(); if (pad.isStartNewPress()) { pause(); } else if (pad.isSelectNewPress() && _isMapAvailable) { showMap(); } else if (pad.isLHeld() && pad.isRHeld()) { commitSuicide(); } Hardware::waitForVBlank(); } }
void fireBullets() { glDisable(GL_LIGHTING); for (int i=0; i<BULLETS_LIM; i++) { if (bullets[i]->isFiring()) { if (i>2) { printf("break"); } glPushMatrix(); glTranslatef(bullets[i]->getX(), bullets[i]->getY(), bullets[i]->getZ()); //Draw bullets glColor3f(0.5, 0.6, 0.0); gluSphere(quad[i],bullets[i]->getRadius(),32,32); if (bullets[i]->increment(lowerX, upperX, lowerZ, upperZ)) { //NOP } else { bullets[i]->stop(); } glPopMatrix(); } } glEnable(GL_LIGHTING); for (int i=0; i<enemyCount[level]; i++) { for (int j=0; j<BULLETS_LIM; j++) { if (!enemies[i]->isDead() && bullets[j]->checkCollission(enemies[i]->getX(), enemies[i]->getY(), enemies[i]->getZ(), enemies[i]->getRadius())) { enemies[i]->kill(); enemiesLeft--; bullets[j]->stop(); if (sound) PlaySound(L"audio/explode.wav",NULL,SND_FILENAME|SND_ASYNC); printf("\nBANG! There are %i enemies left. \n ", enemiesLeft); checkLevelComplete(); } } } }