void UpdateAmmoState() { C_BaseCombatWeapon *wpn = GetActiveWeapon(); C_BasePlayer *player = C_BasePlayer::GetLocalPlayer(); if (player && wpn && wpn->UsesSecondaryAmmo()) { SetAmmo(player->GetAmmoCount(wpn->GetSecondaryAmmoType())); } if ( m_hCurrentActiveWeapon != wpn ) { if ( wpn->UsesSecondaryAmmo() ) { // we've changed to a weapon that uses secondary ammo g_pClientMode->GetViewportAnimationController()->StartAnimationSequence("WeaponUsesSecondaryAmmo"); } else { // we've changed away from a weapon that uses secondary ammo g_pClientMode->GetViewportAnimationController()->StartAnimationSequence("WeaponDoesNotUseSecondaryAmmo"); } m_hCurrentActiveWeapon = wpn; // Get the icon we should be displaying m_iconSecondaryAmmo = gWR.GetAmmoIconFromWeapon( m_hCurrentActiveWeapon->GetSecondaryAmmoType() ); } }
void UpdateAmmoState() { C_BasePlayer *player = C_BasePlayer::GetLocalPlayer(); C_BaseCombatWeapon *wpn = player ? player->GetActiveWeapon() : NULL; if (player && wpn && wpn->UsesSecondaryAmmo()) { SetAmmo(player->GetAmmoCount(wpn->GetSecondaryAmmoType())); } if ( m_hCurrentActiveWeapon != wpn ) { if ( wpn->UsesSecondaryAmmo() ) { // we've changed to a weapon that uses secondary ammo GetClientMode()->GetViewportAnimationController()->StartAnimationSequence("WeaponUsesSecondaryAmmo"); } else { // we've changed away from a weapon that uses secondary ammo GetClientMode()->GetViewportAnimationController()->StartAnimationSequence("WeaponDoesNotUseSecondaryAmmo"); } m_hCurrentActiveWeapon = wpn; } }
void CHudAmmo::Paint( void ) { int r, g, b, a, nUnused; int x, y; Color clrAmmo; if (!ShouldDraw()) return; C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer(); C_BaseCombatWeapon *pActiveWeapon = GetActiveWeapon(); // find and display our current selection if ( !pPlayer || !pActiveWeapon ) { hudlcd->SetGlobalStat( "(ammo_primary)", "n/a" ); hudlcd->SetGlobalStat( "(ammo_secondary)", "n/a" ); return; } hudlcd->SetGlobalStat( "(weapon_print_name)", pActiveWeapon ? pActiveWeapon->GetPrintName() : " " ); hudlcd->SetGlobalStat( "(weapon_name)", pActiveWeapon ? pActiveWeapon->GetName() : " " ); if ( ( pActiveWeapon->GetPrimaryAmmoType() == -1 ) && ( pActiveWeapon->GetSecondaryAmmoType() == -1 ) ) return; int nFontWidth = GetNumberFontWidth(); int nFontHeight = GetNumberFontHeight(); a = (int)max( MIN_ALPHA, m_flFade ); if ( m_flFade > 0 ) m_flFade -= ( gpGlobals->frametime * 20 ); (gHUD.m_clrYellowish).GetColor( r, g, b, nUnused ); clrAmmo.SetColor( r, g, b, a ); int nHudElemWidth, nHudElemHeight; GetSize( nHudElemWidth, nHudElemHeight ); // Does this weapon have a clip? y = nHudElemHeight - ( nFontHeight * 1.5 ); // Does weapon have any ammo at all? if ( pActiveWeapon->GetPrimaryAmmoType() != -1 ) { CHudTexture *icon_ammo = gWR.GetAmmoIconFromWeapon( pActiveWeapon->GetPrimaryAmmoType() ); if ( !icon_ammo ) { return; } int nIconWidth = icon_ammo->Width(); if ( pActiveWeapon->UsesClipsForAmmo1() ) { // room for the number and the '|' and the current ammo x = nHudElemWidth - (8 * nFontWidth) - nIconWidth; x = DrawHudNumber( x, y, pActiveWeapon->Clip1(), clrAmmo ); int nBarWidth = nFontWidth / 10; x += nFontWidth / 2; (gHUD.m_clrYellowish).GetColor( r, g, b, nUnused ); clrAmmo.SetColor( r, g, b, a ); // draw the | bar clrAmmo.SetColor( r, g, b, a ); vgui::surface()->DrawSetColor( clrAmmo ); vgui::surface()->DrawFilledRect( x, y, x + nBarWidth, y + nFontHeight ); x += nBarWidth + nFontWidth / 2; x = DrawHudNumber( x, y, pPlayer->GetAmmoCount( pActiveWeapon->GetPrimaryAmmoType() ), clrAmmo ); } else { // SPR_Draw a bullets only line x = nHudElemWidth - 4 * nFontWidth - nIconWidth; x = DrawHudNumber( x, y, pPlayer->GetAmmoCount( pActiveWeapon->GetPrimaryAmmoType() ), clrAmmo ); } // Draw the ammo Icon icon_ammo->DrawSelf( x, y, clrAmmo ); hudlcd->SetGlobalStat( "(ammo_primary)", VarArgs( "%d", pPlayer->GetAmmoCount( pActiveWeapon->GetPrimaryAmmoType() ) ) ); } else { hudlcd->SetGlobalStat( "(ammo_primary)", "n/a" ); } // Does weapon have seconday ammo? if ( pActiveWeapon->GetSecondaryAmmoType() != -1 ) { CHudTexture *icon_ammo = gWR.GetAmmoIconFromWeapon( pActiveWeapon->GetSecondaryAmmoType() ); if ( !icon_ammo ) { return; } int nIconWidth = icon_ammo->Width(); // Do we have secondary ammo? if ( pPlayer->GetAmmoCount( pActiveWeapon->GetSecondaryAmmoType() ) > 0 ) { y -= ( nFontHeight * 1.25 ); x = nHudElemWidth - 4 * nFontWidth - nIconWidth; x = DrawHudNumber( x, y, pPlayer->GetAmmoCount( pActiveWeapon->GetSecondaryAmmoType() ), clrAmmo ); // Draw the ammo Icon icon_ammo->DrawSelf( x, y, clrAmmo ); } hudlcd->SetGlobalStat( "(ammo_secondary)", VarArgs( "%d", pPlayer->GetAmmoCount( pActiveWeapon->GetSecondaryAmmoType() ) ) ); } else { hudlcd->SetGlobalStat( "(ammo_secondary)", "n/a" ); } }