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; }
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; }
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(); }
void CWeaponMagazined::state_Misfire(float /**dt/**/) { OnEmptyClick(); SwitchState(eIdle); bMisfire = true; UpdateSounds(); }
void Vehicle::Update() { UpdateHUD(); UpdateWheels(); UpdateEffects(); UpdateSounds(); UpdateCameraEntity(); UpdateLight(); }
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 (); }
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; }
void CAR::Update(double dt) { UpdateGraphics(); UpdateSounds(dt); }
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, <Vector(.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); }
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; }
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; }