Esempio n. 1
0
void CWeaponMagazined::state_Fire(float dt)
{
	VERIFY(fTimeToFire > 0.f);

	Fvector					p1, d;
	p1.set(get_LastFP());
	d.set(get_LastFD());

	if (!H_Parent()) return;

	CInventoryOwner* io = smart_cast<CInventoryOwner*>(H_Parent());
	if (NULL == io->inventory().ActiveItem())
	{
		Log("current_state", GetState());
		Log("next_state", GetNextState());
		Log("state_time", m_dwStateTime);
		Log("item_sect", cNameSect().c_str());
		Log("H_Parent", H_Parent()->cNameSect().c_str());
	}

	smart_cast<CEntity*>	(H_Parent())->g_fireParams(this, p1, d);
	if (m_iShotNum == 0)
	{
		m_vStartPos = p1;
		m_vStartDir = d;
	};

	VERIFY(!m_magazine.empty());
	//	Msg("%d && %d && (%d || %d) && (%d || %d)", !m_magazine.empty(), fTime<=0, IsWorking(), m_bFireSingleShot, m_iQueueSize < 0, m_iShotNum < m_iQueueSize);
	while (!m_magazine.empty() && fTime <= 0 && (IsWorking() || m_bFireSingleShot) && (m_iQueueSize < 0 || m_iShotNum < m_iQueueSize))
	{
		m_bFireSingleShot = false;

		VERIFY(fTimeToFire > 0.f);
		fTime += fTimeToFire;

		++m_iShotNum;

		OnShot();
		static int i = 0;
		if (i || m_iShotNum > m_iShootEffectorStart)
		{
			// Do Weapon Callback.  (Cribbledirge)
			StateSwitchCallback(GameObject::eOnActorWeaponFire, GameObject::eOnNPCWeaponFire);

			FireTrace(p1, d);
		}
		else
		{
			FireTrace(m_vStartPos, m_vStartDir);
		}
	}

	if (m_iShotNum == m_iQueueSize)
		m_bStopedAfterQueueFired = true;

	UpdateSounds();
}
Esempio n. 2
0
void CHelicopter::MGunUpdateFire()
{

	fShotTimeCounter -= Device.fTimeDelta;
	if (delta_t < 0){
		delta_t = Device.fTimeGlobal;
		flag_by_fire = 0;
	}
	float time_f = Device.fTimeGlobal - delta_t;

	float fire_time;
	if(pSettings->line_exist(*cNameSect(),"fire_time"))
		fire_time = pSettings->r_float(*cNameSect(),"fire_time");
	else
		fire_time = -1;

	float no_fire_time;
	if(pSettings->line_exist(*cNameSect(),"no_fire_time"))
		no_fire_time = pSettings->r_float(*cNameSect(),"no_fire_time");
	else
		no_fire_time = -1;

	CShootingObject::UpdateFlameParticles();
	CShootingObject::UpdateLight();

	if(!IsWorking()) {
		clamp(fShotTimeCounter,0.0f, flt_max);
		return;
	}
	if(no_fire_time > 0 && fire_time > 0) {
		if (flag_by_fire==1 && time_f > fire_time){
			delta_t = Device.fTimeGlobal;
			time_f = Device.fTimeGlobal - delta_t;
			flag_by_fire = 0;
		}
		if (time_f > no_fire_time && flag_by_fire ==0){
			delta_t = Device.fTimeGlobal;
			time_f = Device.fTimeGlobal - delta_t;
			flag_by_fire = 1;
		}
		if(flag_by_fire ==0 && time_f < no_fire_time) return;
	}

	if(fShotTimeCounter<=0) 
	{
		OnShot();
		fShotTimeCounter += fOneShotTime;
	}

}
int Visor::cQMainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QMainWindow::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: OnLayout(); break;
        case 1: OnSliderMoved((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 2: OnRotate(); break;
        case 3: OnMove(); break;
        case 4: OnWatchTimer(); break;
        case 5: OnShot(); break;
        default: ;
        }
        _id -= 6;
    }
    return _id;
}
Esempio n. 4
0
void CHelicopter::MGunUpdateFire()
{

	fTime -= Device.fTimeDelta;


	CShootingObject::UpdateFlameParticles();
	CShootingObject::UpdateLight();

	if(!IsWorking()) {
		if(fTime<0) fTime = 0.f;
		return;
	}

	if(fTime<=0) {
		OnShot();
		fTime += fTimeToFire;
	}

}
Esempio n. 5
0
void CWeaponStatMgun::UpdateFire()
{
	fShotTimeCounter -= Device.fTimeDelta;
	

	inheritedShooting::UpdateFlameParticles();
	inheritedShooting::UpdateLight();

	if(!IsWorking()){
		clamp(fShotTimeCounter,0.0f, flt_max);
		return;
	}

	if(fShotTimeCounter<=0)
	{
		OnShot			();
		fShotTimeCounter		+= fOneShotTime;
	}else
	{
		angle_lerp		(m_dAngle.x,0.f,5.f,Device.fTimeDelta);
		angle_lerp		(m_dAngle.y,0.f,5.f,Device.fTimeDelta);
	}
}
Esempio n. 6
0
void CCarWeapon::UpdateFire()
{
	fTime -= Device.fTimeDelta;

	inheritedShooting::UpdateFlameParticles();
	inheritedShooting::UpdateLight();
	
	if(m_bAutoFire){
		if(m_allow_fire){
			FireStart();
		}else
			FireEnd();
	};

	if(!IsWorking()){
		if(fTime<0) fTime = 0.f;
		return;
	}

	if(fTime<=0){
		OnShot();
		fTime += fTimeToFire;
	}
}