allow inactive weapons to modify the hud model

This commit is contained in:
gidi30 2025-11-06 21:03:01 +01:00
parent a202d4e47b
commit d8d88cb8cb
2 changed files with 28 additions and 20 deletions

View File

@ -443,10 +443,11 @@ void CTFHudPlayerClass::UpdateModelPanel()
if ( m_pPlayerModelPanel && m_pPlayerModelPanel->IsVisible() )
{
m_pPlayerModelPanel->ClearCarriedItems();
int nClass;
int nTeam;
int nItemSlot = m_nLoadoutPosition;
CEconItemView *pWeapon = NULL;
bool bDisguised = pPlayer->m_Shared.InCond( TF_COND_DISGUISED );
if ( bDisguised )
@ -457,10 +458,11 @@ void CTFHudPlayerClass::UpdateModelPanel()
if ( pPlayer->m_Shared.GetDisguiseWeapon() )
{
CAttributeContainer *pCont = pPlayer->m_Shared.GetDisguiseWeapon()->GetAttributeContainer();
pWeapon = pCont ? pCont->GetItem() : NULL;
CEconItemView *pWeapon = pCont ? pCont->GetItem() : NULL;
if ( pWeapon )
{
nItemSlot = pWeapon->GetStaticData()->GetLoadoutSlot( nClass );
m_pPlayerModelPanel->AddCarriedItem( pWeapon );
}
}
}
@ -469,22 +471,25 @@ void CTFHudPlayerClass::UpdateModelPanel()
nClass = pPlayer->GetPlayerClass()->GetClassIndex();
nTeam = pPlayer->GetTeamNumber();
CTFWeaponBase *pEnt = dynamic_cast< CTFWeaponBase* >( pPlayer->GetEntityForLoadoutSlot( nItemSlot ) );
if ( pEnt )
for ( int wpn = 0; wpn < pPlayer->WeaponCount(); wpn++ )
{
pWeapon = pEnt->GetAttributeContainer()->GetItem();
C_TFWeaponBase *pWpn = dynamic_cast<C_TFWeaponBase *>( pPlayer->GetWeapon( wpn ) );
if ( !pWpn )
continue;
CAttributeContainer *pCont = pWpn->GetAttributeContainer();
CEconItemView *pEconItemView = pCont ? pCont->GetItem() : NULL;
if ( pEconItemView && pEconItemView->IsValid() )
{
m_pPlayerModelPanel->AddCarriedItem( pEconItemView );
}
}
}
m_pPlayerModelPanel->ClearCarriedItems();
m_pPlayerModelPanel->SetToPlayerClass( nClass );
m_pPlayerModelPanel->SetTeam( nTeam );
if ( pWeapon )
{
m_pPlayerModelPanel->AddCarriedItem( pWeapon );
}
for ( int wbl = pPlayer->GetNumWearables()-1; wbl >= 0; wbl-- )
{
C_TFWearable *pItem = dynamic_cast<C_TFWearable*>( pPlayer->GetWearable( wbl ) );

View File

@ -257,21 +257,24 @@ void CTFClientScoreBoardDialog::UpdatePlayerModel()
int nClass = pPlayer->GetPlayerClass()->GetClassIndex();
int nTeam = pPlayer->GetTeamNumber();
int nItemSlot = ( pPlayer->IsAlive() && pPlayer->GetActiveTFWeapon() ) ? pPlayer->GetActiveTFWeapon()->GetAttributeContainer()->GetItem()->GetStaticData()->GetLoadoutSlot( nClass ) : LOADOUT_POSITION_PRIMARY;
CEconItemView *pWeapon = NULL;
CTFWeaponBase *pEnt = dynamic_cast<CTFWeaponBase*>( pPlayer->GetEntityForLoadoutSlot( nItemSlot ) );
if ( pEnt )
{
pWeapon = pEnt->GetAttributeContainer()->GetItem();
}
m_pPlayerModelPanel->ClearCarriedItems();
m_pPlayerModelPanel->SetToPlayerClass( nClass );
m_pPlayerModelPanel->SetTeam( nTeam );
if ( pWeapon )
for ( int wpn = 0; wpn < pPlayer->WeaponCount(); wpn++ )
{
m_pPlayerModelPanel->AddCarriedItem( pWeapon );
C_TFWeaponBase *pWpn = dynamic_cast<C_TFWeaponBase *>( pPlayer->GetWeapon( wpn ) );
if ( !pWpn )
continue;
CAttributeContainer *pCont = pWpn->GetAttributeContainer();
CEconItemView *pEconItemView = pCont ? pCont->GetItem() : NULL;
if ( pEconItemView && pEconItemView->IsValid() )
{
m_pPlayerModelPanel->AddCarriedItem( pEconItemView );
}
}
for ( int wbl = pPlayer->GetNumWearables() - 1; wbl >= 0; wbl-- )