//-----------------------------------------------------------------------------
// Purpose: 
//-----------------------------------------------------------------------------
void CHudBonusProgress::Reset()
{
	m_iBonusProgress = INIT_BONUS_PROGRESS;

	C_BasePlayer *local = C_BasePlayer::GetLocalPlayer();
	if ( local )
		m_iLastChallenge = local->GetBonusChallenge();

	SetChallengeLabel();

	SetDisplayValue(m_iBonusProgress);
}
//-----------------------------------------------------------------------------
// Purpose: 
//-----------------------------------------------------------------------------
void CHudBonusProgress::OnThink()
{
	C_GameRules *pGameRules = GameRules();

	if ( !pGameRules )
	{
		// Not ready to init!
		return;
	}

	int newBonusProgress = 0;
	int iBonusChallenge = 0;

	C_BasePlayer *local = C_BasePlayer::GetLocalPlayer();
	if ( !local )
	{
		// Not ready to init!
		return;
	}

	// Never below zero
	newBonusProgress = MAX( local->GetBonusProgress(), 0 );
	iBonusChallenge = local->GetBonusChallenge();

	// Only update the fade if we've changed bonusProgress
	if ( newBonusProgress == m_iBonusProgress && m_iLastChallenge == iBonusChallenge )
	{
		return;
	}

	m_iBonusProgress = newBonusProgress;

	if ( m_iLastChallenge != iBonusChallenge )
	{
		m_iLastChallenge = iBonusChallenge;
		SetChallengeLabel();
	}

	g_pClientMode->GetViewportAnimationController()->StartAnimationSequence("BonusProgressFlash");

	if ( pGameRules->IsBonusChallengeTimeBased() )
	{
		SetIsTime( true );
		SetIndent( false );
	}
	else
	{
		SetIsTime( false );
		SetIndent( true );
	}

	SetDisplayValue(m_iBonusProgress);
}