mirror of
https://github.com/ValveSoftware/source-sdk-2013.git
synced 2025-04-09 03:24:52 +00:00
fix prediction for hud charge meters
This commit is contained in:
parent
0759e2e8e1
commit
a328318d6e
6 changed files with 45 additions and 94 deletions
|
@ -229,29 +229,8 @@ void CHudBowChargeMeter::OnTick( void )
|
|||
CTFWeaponBase *pWpn = pPlayer->GetActiveTFWeapon();
|
||||
ITFChargeUpWeapon *pChargeupWeapon = dynamic_cast< ITFChargeUpWeapon *>( pWpn );
|
||||
|
||||
if ( !pWpn || !pChargeupWeapon )
|
||||
if ( !pWpn || !pChargeupWeapon || !m_pChargeMeter || !pChargeupWeapon->GetChargeMaxTime() )
|
||||
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 );
|
||||
flTimeCharged = MIN( flTimeCharged, 1.f );
|
||||
float flPercentCharged = MIN( 1.0, flTimeCharged / flChargeMaxTime );
|
||||
|
||||
m_pChargeMeter->SetProgress( flPercentCharged );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pChargeMeter->SetProgress( 0.0f );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
m_pChargeMeter->SetProgress( pChargeupWeapon->GetPercentProgress() );
|
||||
}
|
||||
|
|
|
@ -115,28 +115,8 @@ void CHudDemomanChargeMeter::OnTick( void )
|
|||
|
||||
|
||||
ITFChargeUpWeapon *pChargeupWeapon = dynamic_cast< ITFChargeUpWeapon *>( pWpn );
|
||||
if ( !pWpn || !pChargeupWeapon || !pChargeupWeapon->CanCharge() )
|
||||
if ( !pWpn || !pChargeupWeapon || !pChargeupWeapon->CanCharge() || !m_pChargeMeter || !pChargeupWeapon->GetChargeMaxTime() )
|
||||
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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_pChargeMeter->SetProgress( pChargeupWeapon->GetPercentProgress() );
|
||||
}
|
||||
|
|
|
@ -119,28 +119,8 @@ void CHudFlameRocketChargeMeter::OnTick( void )
|
|||
CTFWeaponBase *pWpn = pPlayer->GetActiveTFWeapon();
|
||||
ITFChargeUpWeapon *pChargeupWeapon = dynamic_cast< ITFChargeUpWeapon *>( pWpn );
|
||||
|
||||
if ( !pWpn || !pChargeupWeapon )
|
||||
if ( !pWpn || !pChargeupWeapon || !m_pChargeMeter || !pChargeupWeapon->GetChargeMaxTime() )
|
||||
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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
m_pChargeMeter->SetProgress( pChargeupWeapon->GetPercentProgress() );
|
||||
}
|
||||
|
|
|
@ -118,29 +118,8 @@ void CHudSapperChargeMeter::OnTick( void )
|
|||
CTFWeaponBase *pWpn = pPlayer->GetActiveTFWeapon();
|
||||
ITFChargeUpWeapon *pChargeupWeapon = dynamic_cast< ITFChargeUpWeapon *>( pWpn );
|
||||
|
||||
if ( !pWpn || !pChargeupWeapon )
|
||||
if ( !pWpn || !pChargeupWeapon || !m_pChargeMeter || !pChargeupWeapon->GetChargeMaxTime() )
|
||||
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 );
|
||||
flTimeCharged = MIN( flTimeCharged, flChargeMaxTime );
|
||||
float flPercentCharged = MIN( 1.0, flTimeCharged / flChargeMaxTime );
|
||||
|
||||
m_pChargeMeter->SetProgress( flPercentCharged );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pChargeMeter->SetProgress( 0.0f );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
m_pChargeMeter->SetProgress( pChargeupWeapon->GetPercentProgress() );
|
||||
}
|
||||
|
|
|
@ -2462,6 +2462,31 @@ void CTFWeaponBase::ItemPostFrame( void )
|
|||
{
|
||||
FireFullClipAtOnce();
|
||||
}
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
ITFChargeUpWeapon *pChargeupWeapon = dynamic_cast< ITFChargeUpWeapon *>( this );
|
||||
if ( pChargeupWeapon && pChargeupWeapon->CanCharge() )
|
||||
{
|
||||
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 );
|
||||
|
||||
pChargeupWeapon->SetPercentProgress( flPercentCharged );
|
||||
}
|
||||
else
|
||||
{
|
||||
pChargeupWeapon->SetPercentProgress( 0.f );
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -118,6 +118,14 @@ public:
|
|||
{
|
||||
return ( gpGlobals->curtime - GetChargeBeginTime() ) / GetChargeMaxTime();
|
||||
}
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
void SetPercentProgress( float flPercentProgress ) { m_flPercentProgress = flPercentProgress; };
|
||||
float GetPercentProgress( void ) { return m_flPercentProgress; };
|
||||
|
||||
private:
|
||||
float m_flPercentProgress = 0;
|
||||
#endif
|
||||
};
|
||||
|
||||
class CTraceFilterIgnoreTeammates : public CTraceFilterSimple
|
||||
|
|
Loading…
Reference in a new issue