Example #1
0
void userCannonFire() {

    
    bool allProjectilesAreFiring = true;
    int freeProjectileNumber = 0;
    for(int i = 0; i < cannonProjectiles.size(); i++) {
        if (!cannonProjectiles[i]->isFiring()) {
            allProjectilesAreFiring = false;
            freeProjectileNumber = i;
            break;
        }
    }
    
    if (cannon->isRecoiling() || allProjectilesAreFiring)
        return;
    
    fireCannonFlashCounter = 0; // starts the light 'flash' process
    Sound::playCannonFire();
    cannon->recoilBegin(_cannonCam->getCamX(), _cannonCam->getCamY(), _cannonCam->getCamZ());
   
    Projectile * projectileToFire = cannonProjectiles[freeProjectileNumber];
    float cannonPosX = cannon->getPosition()[0];
    float cannonPosY = cannon->getPosition()[1];
    float cannonPosZ = cannon->getPosition()[2];
    projectileToFire->fireBegin(_cannonCam->getHAngle(), _cannonCam->getVAngle(), cannonPosX, cannonPosY, cannonPosZ);
    
}