//----------------------------------------------------------------------------- // Purpose: Message hook to parse ScreenFade messages // Input : *pszName - // iSize - // *pbuf - // Output : int //----------------------------------------------------------------------------- void CViewEffects::Fade( ScreenFade_t &data ) { // Create a new fade and append it to the list screenfade_t *pNewFade = new screenfade_t; pNewFade->End = data.duration * (1.0f/(float)(1<<SCREENFADE_FRACBITS)); pNewFade->Reset = data.holdTime * (1.0f/(float)(1<<SCREENFADE_FRACBITS)); pNewFade->r = data.r; pNewFade->g = data.g; pNewFade->b = data.b; pNewFade->alpha = data.a; pNewFade->Flags = data.fadeFlags; pNewFade->Speed = 0; // Calc fade speed if ( data.duration > 0 ) { if ( data.fadeFlags & FFADE_OUT ) { if ( pNewFade->End ) { pNewFade->Speed = -(float)pNewFade->alpha / pNewFade->End; } pNewFade->End += gpGlobals->curtime; pNewFade->Reset += pNewFade->End; } else { if ( pNewFade->End ) { pNewFade->Speed = (float)pNewFade->alpha / pNewFade->End; } pNewFade->Reset += gpGlobals->curtime; pNewFade->End += pNewFade->Reset; } } if ( data.fadeFlags & FFADE_PURGE ) { ClearAllFades(); } m_FadeList.AddToTail( pNewFade ); }
int CHud :: MsgFunc_ResetHUD(const char *pszName, int iSize, void *pbuf ) { // clear all hud data HUDLIST *pList = m_pHudList; while( pList ) { if( pList->p ) pList->p->Reset(); pList = pList->pNext; } // needs to clear any remaining screenfade ClearAllFades (); // reset sensitivity m_flMouseSensitivity = 0; // reset concussion effect m_iConcussionEffect = 0; m_iIntermission = 0; // enable plaque drawing m_iDrawPlaque = 1; // reset windspeed m_vecWindVelocity = Vector( 0, 0, 0 ); // reset shake m_Shake.amplitude = 0; m_Shake.frequency = 0; m_Shake.duration = 0; // reset fog m_flStartDist = 0; m_flEndDist = 0; return 1; }
//----------------------------------------------------------------------------- // Purpose: // Input : *pRestore - // fCreatePlayers - //----------------------------------------------------------------------------- void CViewEffects::Restore( IRestore *pRestore, bool fCreatePlayers ) { CGameSaveRestoreInfo *pSaveData = pRestore->GetGameSaveRestoreInfo(); // View effects is a singleton so we only need to restore it once, // from the level that we are going into. if( !pSaveData->levelInfo.fUseLandmark ) { ClearAllFades(); ClearAllShakes(); // Read in the view fades int iCount = pRestore->ReadInt(); for ( int i = 0; i < iCount; i++ ) { screenfade_t *pNewFade = new screenfade_t; pRestore->StartBlock(); pRestore->ReadAll( pNewFade ); pRestore->EndBlock(); m_FadeList.AddToTail( pNewFade ); } // Read in the view shakes iCount = pRestore->ReadInt(); for ( int i = 0; i < iCount; i++ ) { screenshake_t *pNewShake = new screenshake_t; pRestore->StartBlock(); pRestore->ReadAll( pNewShake ); pRestore->EndBlock(); m_ShakeList.AddToTail( pNewShake ); } } }
~CViewEffects() { ClearAllFades(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CViewEffects::LevelInit( void ) { ClearAllShakes(); ClearAllFades(); }