//------------------------------------------------------------------------------ // Manage the trigger switch event //------------------------------------------------------------------------------ bool SimpleStoresMgr::onTriggerSwEvent(const base::Boolean* const sw) { Gun* g = getGun(); // Get the primary gun if (g != nullptr) { // Single Burst? bool burst = (sw == nullptr); // Firing? bool fire = false; if ( isWeaponDeliveryMode(A2A) || isWeaponDeliveryMode(A2G) ) { if ( burst ) fire = true; else fire = sw->getBoolean(); } // Pass the control to the gun g->fireControl(fire, burst); } return true; }
void LifeForm::fire() { Basic::Number* hdgObj = new Basic::Number(getHeadingR()); Basic::Number* pitchObj = new Basic::Number(lookAngle * Basic::Angle::D2RCC); StoresMgr* mgr = getStoresManagement(); if (mgr != nullptr) { if (getSimulation() != nullptr) { if (weaponSel == LF_MISSILE) { mgr->setGunSelected(false); Missile* missile = mgr->getNextMissile(); if (missile != nullptr) { missile->setSlotInitPitch(pitchObj); missile->setSlotInitHeading(hdgObj); missile->reset(); Missile* msl = mgr->releaseOneMissile(); if (msl != nullptr) { if (tgtAquired && tgtPlayer != nullptr) msl->setTargetPlayer(tgtPlayer, true); } } } else if (weaponSel == LF_GUN) { mgr->setGunSelected(true); Gun* myGun = mgr->getGun(); if (myGun != nullptr) { myGun->setGunArmed(true); Basic::Number* num = new Basic::Number(lookAngle * Basic::Angle::D2RCC); myGun->setSlotPitch(num); num->unref(); myGun->fireControl(true); } } } } hdgObj->unref(); pitchObj->unref(); }