Exemplo n.º 1
0
LTBOOL SecurityCamera::Update()
{
	State eStatePrevious = m_eState;

	if (m_bTripped)
	{
		UpdateFlashingLight();
		SetNextUpdate(0.001f);
		return LTTRUE;
	}

	if (m_eState == eStateDestroyed || m_eState == eStateOff)
	{
        SetNextUpdate(0.0f);
        return LTTRUE;
	}

	UpdateRotation();

	if (!m_bDisabled)
	{
		UpdateDetect();
	}

	UpdateSounds(eStatePrevious);

    SetNextUpdate(0.001f);

	UpdateFlashingLight();

    return LTTRUE;
}
Exemplo n.º 2
0
void QSPCallBacks::PlayFile(QSPString file, int volume)
{
	FMOD_SOUND *newSound;
	FMOD_CHANNEL *newChannel;
	QSPSound snd;
	if (SetVolume(file, volume)) return;
	CloseFile(file);
	wxString strFile(wxFileName(wxString(file.Str, file.End), wxPATH_DOS).GetFullPath());
	#if defined(__WXMSW__) || defined(__WXOSX__)
	if (!FMOD_System_CreateSound(m_sys, wxConvFile.cWX2MB(strFile.c_str()), FMOD_SOFTWARE | FMOD_CREATESTREAM, 0, &newSound))
	#else
	FMOD_CREATESOUNDEXINFO exInfo;
	memset(&exInfo, 0, sizeof(FMOD_CREATESOUNDEXINFO));
	exInfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO);
	wxString dlsPath(QSPTools::GetAppPath() + QSP_MIDIDLS);
	wxCharBuffer dlsCharPath(wxConvFile.cWX2MB(dlsPath.c_str()));
	exInfo.dlsname = dlsCharPath;
	if (!FMOD_System_CreateSound(m_sys, wxConvFile.cWX2MB(strFile.c_str()), FMOD_SOFTWARE | FMOD_CREATESTREAM, &exInfo, &newSound))
	#endif
	{
		UpdateSounds();
		FMOD_System_PlaySound(m_sys, FMOD_CHANNEL_FREE, newSound, FALSE, &newChannel);
		snd.Channel = newChannel;
		snd.Sound = newSound;
		snd.Volume = volume;
		m_sounds.insert(QSPSounds::value_type(strFile.Upper(), snd));
		SetVolume(file, volume);
	}
}
HRESULT CAdActor::Display()
{	
	if(m_Active) UpdateSounds();

	DWORD Alpha;
	if(m_AlphaColor!=0) Alpha = m_AlphaColor;
	else Alpha = m_Shadowable?((CAdGame*)Game)->m_Scene->GetAlphaAt(m_PosX, m_PosY, true):0xFFFFFFFF;

	float ScaleX, ScaleY;
	GetScale(&ScaleX, &ScaleY);


	float Rotate;
	if(m_Rotatable)
	{
		if(m_RotateValid) Rotate = m_Rotate;
		else Rotate = ((CAdGame*)Game)->m_Scene->GetRotationAt(m_PosX, m_PosY) + m_RelativeRotate;
	}
	else Rotate = 0.0f;

	if(m_Active) DisplaySpriteAttachments(true);

	if(m_CurrentSprite && m_Active)
	{
		bool Reg = m_Registrable;
		if(m_IgnoreItems && ((CAdGame*)Game)->m_SelectedItem) Reg = false;
		
		m_CurrentSprite->Display(m_PosX,
									m_PosY,
									Reg?m_RegisterAlias:NULL,
									ScaleX,
									ScaleY,
									Alpha,
									Rotate,
									m_BlendMode);
		
	}

	if(m_Active) DisplaySpriteAttachments(false);
	if(m_Active && m_PartEmitter) m_PartEmitter->Display();


	// accessibility
	if(Game->m_AccessMgr->GetActiveObject()==this)
	{
		float ScaleX, ScaleY;
		GetScale(&ScaleX, &ScaleY);

		RECT rc;
		SetRectEmpty(&rc);
		if(m_CurrentSprite)
		{				
			m_CurrentSprite->GetBoundingRect(&rc, m_PosX - Game->m_OffsetX, m_PosY - Game->m_OffsetY, ScaleX, ScaleY);
		}
		Game->m_AccessMgr->SetHintRect(&rc);
	}

	return S_OK;
}
Exemplo n.º 4
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();
}
Exemplo n.º 5
0
void CWeaponMagazined::state_Misfire(float /**dt/**/)
{
	OnEmptyClick();
	SwitchState(eIdle);

	bMisfire = true;

	UpdateSounds();
}
Exemplo n.º 6
0
void Vehicle::Update()
{
  UpdateHUD();
  UpdateWheels();
  UpdateEffects();
  UpdateSounds();
  UpdateCameraEntity();
  UpdateLight();
}
Exemplo n.º 7
0
void CWeaponMagazined::UpdateCL			()
{
	inherited::UpdateCL	();
	float dt = Device.fTimeDelta;

	

	//когда происходит апдейт состояния оружия
	//ничего другого не делать
	if(GetNextState() == GetState())
	{
		switch (GetState())
		{
		case eShowing:
		case eHiding:
		case eReload:
		case eIdle:
			fTime			-=	dt;
			if (fTime<0)	
				fTime = 0;
			break;
		case eFire:			
			if(iAmmoElapsed>0)
				state_Fire		(dt);
			
			if(fTime<=0)
			{
				if(iAmmoElapsed == 0)
					OnMagazineEmpty();
				StopShooting();
			}
			else
			{
				fTime			-=	dt;
			}

			break;
		case eMisfire:		state_Misfire	(dt);	break;
		case eMagEmpty:		state_MagEmpty	(dt);	break;
		case eHidden:		break;
		}
	}

	UpdateSounds		();
}
Exemplo n.º 8
0
LTBOOL SecurityCamera::Update()
{
	State eStatePrevious = m_eState;

	if (m_eState == eStateDestroyed)
	{
        SetNextUpdate(UPDATE_NEVER);
        return LTTRUE;
	}

	if (m_bTripped)
	{
		UpdateFlashingLight();
		SetNextUpdate(UPDATE_NEXT_FRAME);
		return LTTRUE;
	}

	if(m_eState == eStateOff)
	{
		SetNextUpdate(UPDATE_NEVER);
        return LTTRUE;
	}

	// Only update the rotation and detection if the camera is not disabled...

	if (!m_bDisabled)
	{
		UpdateRotation();
		UpdateDetect();
	}

	UpdateSounds(eStatePrevious);

    SetNextUpdate(UPDATE_NEXT_FRAME);

	UpdateFlashingLight();

    return LTTRUE;
}
Exemplo n.º 9
0
void CAR::Update(double dt)
{
	UpdateGraphics();
	UpdateSounds(dt);
}
Exemplo n.º 10
0
uint32 Speaker::EngineMessageFn(uint32 messageID, void *pData, LTFLOAT fData)
{
	switch(messageID)
	{
		case MID_UPDATE:
		{
			UpdateSounds();

		    SetNextUpdate(0.1f);
		}
		break;

		case MID_PRECREATE:
		{
            uint32 dwRet = CCharacter::EngineMessageFn(messageID, pData, fData);

			int nInfo = (int)fData;
			if (nInfo == PRECREATE_WORLDFILE || nInfo == PRECREATE_STRINGPROP)
			{
				ReadProp((ObjectCreateStruct*)pData);
			}
			return dwRet;
		}
		break;

		case MID_INITIALUPDATE:
		{
            if (!g_pLTServer) return 0;

            SetNextUpdate(0.1f);

			int nInfo = (int)fData;
			if (nInfo != INITIALUPDATE_SAVEGAME)
			{
				InitialUpdate();
			}

			m_dwFlags &= ~FLAG_RAYHIT;
			m_dwFlags &= ~FLAG_VISIBLE;
			m_dwFlags &= ~FLAG_SOLID;
			// m_dwFlags |= FLAG_FORCEOPTIMIZEOBJECT;
			m_dwFlags &= ~FLAG_GRAVITY;

			// This is necessary for the CharacterFX object to be
			// created, and for subtitles to work with the speaker...
			m_dwFlags |= FLAG_FORCECLIENTUPDATE;

			m_damage.SetCanDamage(LTFALSE);
			m_damage.SetNeverDestroy(LTTRUE);

			g_pLTServer->SetObjectDims(m_hObject, &LTVector(.01f,.01f,.01f));
		}
		break;

		case MID_SAVEOBJECT:
		{
            Save((HMESSAGEWRITE)pData, (uint32)fData);
		}
		break;

		case MID_LOADOBJECT:
		{
            Load((HMESSAGEREAD)pData, (uint32)fData);
		}
		break;

		default:
		{
		}
		break;
	}

	return CCharacter::EngineMessageFn(messageID, pData, fData);
}
Exemplo n.º 11
0
void SecurityCamera::SetState(State eNewState)
{
	if (m_eState == eNewState) return;

	// Handle switching to the new state...

	switch (eNewState)
	{
		case eStateDestroyed:
		{
			// Turn off the sprite...

			if (m_hLight)
			{
                uint32 dwFlags = g_pLTServer->GetObjectFlags(m_hLight);
				dwFlags &= ~FLAG_VISIBLE;
                g_pLTServer->SetObjectFlags(m_hLight, dwFlags);
			}

			SetDestroyedModel();

			// Camera can't be disabled now...

            uint32 dwUserFlags = g_pLTServer->GetObjectUserFlags(m_hObject);
            g_pLTServer->SetObjectUserFlags(m_hObject, dwUserFlags & ~USRFLG_GADGET_CAMERA_DISABLER);

			KillAllSounds();
		}
		break;

		case eStateOff:
		{
			KillAllSounds();

			// Leave the light on if the camera was tripped...

			if (!m_bTripped)
			{
				// Turn off the light...

				if (m_hLight)
				{
					uint32 dwFlags = g_pLTServer->GetObjectFlags(m_hLight);

					if (dwFlags & FLAG_VISIBLE)
					{
						dwFlags &= ~FLAG_VISIBLE;
					}

					g_pLTServer->SetObjectFlags(m_hLight, dwFlags);
				}
			}
		}
		break;

		case eStateDisabled:
		{
			SetupDisabledState();
			return;  // Don't change states...
		}
		break;

		case eStateFocusing:
		{
			// If we're in the detected state, don't re-focus...

			if (m_eState == eStateDetected) return;

			StartFocusingSound();
		}
		break;

		case eStateDetected:
		{
			// Turn on Red sprite...

			if (m_hLight)
			{
                uint32 dwFlags = g_pLTServer->GetObjectFlags(m_hLight);
				dwFlags |= FLAG_VISIBLE;
                g_pLTServer->SetObjectFlags(m_hLight, dwFlags);

				char buf[128];
				g_pServerButeMgr->GetSecurityCameraString("RedLight",
					buf, ARRAY_LEN(buf));

                g_pLTServer->SetObjectFilenames(m_hLight, buf, "");
			}
		}
		break;

		case eStateReset:
		{
			m_bTripped = LTFALSE;

			// Reset the camera...

			if (m_fYaw > m_fYaw1)
			{
				m_ePreviousState = eStatePausingAt1;
				m_eState		 = eStateTurningTo2;

				UpdateSounds(m_ePreviousState);
			}
			else
			{
				m_ePreviousState = eStatePausingAt1;
				m_eState		 = eStatePausingAt1;
			}

            SetNextUpdate(0.001f);

			// Make sure we processes detection...

            m_bCanProcessDetection = LTTRUE;
			return;
		}
		break;

		default : break;
	}

	m_ePreviousState = m_eState;
	m_eState = eNewState;
}
Exemplo n.º 12
0
void SecurityCamera::SetState(State eNewState)
{
	// If we are destroyed we can't go into any other state...

	if( m_eState == eStateDestroyed ) return;
	
	if (m_eState == eNewState) return;
	
	// Handle switching to the new state...

	switch (eNewState)
	{
		case eStateDestroyed:
		{
			// Turn off the sprite...

			TurnLightOn(LTFALSE);

			SetDestroyedModel();

			// Stop sensing.

			EnableSensing( LTFALSE );

			// Camera can't be disabled now...

            g_pCommonLT->SetObjectFlags(m_hObject, OFT_User, 0, USRFLG_GADGET_CAMERA_DISABLER);

			KillAllSounds();
		}
		break;

		case eStateOff:
		{
			KillAllSounds();

			// Stop sensing.

			EnableSensing( LTFALSE );

			// Leave the light on if the camera was tripped...

			if (!m_bTripped)
			{
				// Turn off the light...

				TurnLightOn(LTFALSE);
			}
		}
		break;

		case eStateDisabled:
		{
			// Stop sensing.

			EnableSensing( LTFALSE );

			SetupDisabledState();
			TurnLightOn();
			SetLightColor( eBlue );
			return;  // Don't change states...
		}
		break;

		case eStateFocusing:
		{
			// Sense.

			EnableSensing( LTTRUE );

			// If we're in the detected state, don't re-focus...

			if (m_eState == eStateDetected) return;

			StartFocusingSound();
		}
		break;

		case eStateDetected:
		{
			// Sense.

			EnableSensing( LTTRUE );

			// Turn on Red sprite...

			TurnLightOn();
			SetLightColor(eRed);
		}
		break;

		case eStateReset:
		{
			// Sense.

			EnableSensing( LTTRUE );

			m_bTripped = LTFALSE;

			// Reset the camera...

			if (m_fYaw > m_fYaw1)
			{
				m_ePreviousState = eStatePausingAt1;
				m_eState		 = eStateTurningTo2;

				UpdateSounds(m_ePreviousState);
			}
			else
			{
				m_ePreviousState = eStatePausingAt1;
				m_eState		 = eStatePausingAt1;
			}

            SetNextUpdate(UPDATE_NEXT_FRAME);

			// Make sure we processes detection...

            SetCanProcessDetection( LTTRUE );
			return;
		}
		break;

		default : break;
	}

	m_ePreviousState = m_eState;
	m_eState = eNewState;
}