//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CHudDemomanChargeMeter::OnTick( void ) { C_TFPlayer *pPlayer = C_TFPlayer::GetLocalTFPlayer(); if ( !pPlayer ) return; CTFWeaponBase *pWpn = pPlayer->GetActiveTFWeapon(); ITFChargeUpWeapon *pChargeupWeapon = dynamic_cast< ITFChargeUpWeapon *>( pWpn ); if ( !pWpn || !pChargeupWeapon ) return; if ( m_pChargeMeter ) { float flChargeMaxTime = pChargeupWeapon->GetChargeMaxTime(); if ( flChargeMaxTime != 0 ) { float flChargeBeginTime = pChargeupWeapon->GetChargeBeginTime(); if ( flChargeBeginTime > 0 ) { float flTimeCharged = max( 0, gpGlobals->curtime - flChargeBeginTime ); float flPercentCharged = min( 1.0, flTimeCharged / flChargeMaxTime ); m_pChargeMeter->SetProgress( flPercentCharged ); } else { m_pChargeMeter->SetProgress( 0.0f ); } } } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CHudMedicChargeMeter::OnTick( void ) { C_TFPlayer *pPlayer = C_TFPlayer::GetLocalTFPlayer(); if ( !pPlayer ) return; CTFWeaponBase *pWpn = pPlayer->GetActiveTFWeapon(); if ( !pWpn || ( pWpn->GetWeaponID() != TF_WEAPON_MEDIGUN ) ) return; CWeaponMedigun *pMedigun = static_cast< CWeaponMedigun *>( pWpn ); if ( !pMedigun ) return; float flCharge = pMedigun->GetChargeLevel(); if ( flCharge != m_flLastChargeValue ) { if ( m_pChargeMeter ) { m_pChargeMeter->SetProgress( flCharge ); } if ( !m_bCharged ) { if ( flCharge >= 1.0 ) { g_pClientMode->GetViewportAnimationController()->StartAnimationSequence( this, "HudMedicCharged" ); m_bCharged = true; } } else { // we've got invuln charge or we're using our invuln if ( !pMedigun->IsReleasingCharge() ) { g_pClientMode->GetViewportAnimationController()->StartAnimationSequence( this, "HudMedicChargedStop" ); m_bCharged = false; } } } m_flLastChargeValue = flCharge; }