Esempio n. 1
0
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();
            }
        }
    }
}