//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CTFDeathMatchScoreBoardDialog::UpdatePlayerAvatar(int playerIndex, KeyValues *kv) { // Update their avatar if (kv && ShowAvatars() && steamapicontext->SteamFriends() && steamapicontext->SteamUtils()) { player_info_t pi; if (engine->GetPlayerInfo(playerIndex, &pi)) { if (pi.friendsID) { CSteamID steamIDForPlayer(pi.friendsID, 1, steamapicontext->SteamUtils()->GetConnectedUniverse(), k_EAccountTypeIndividual); // See if we already have that avatar in our list int iMapIndex = m_mapAvatarsToImageList.Find(steamIDForPlayer); int iImageIndex; if (iMapIndex == m_mapAvatarsToImageList.InvalidIndex()) { CAvatarImage *pImage = new CAvatarImage(); pImage->SetAvatarSteamID(steamIDForPlayer); pImage->SetAvatarSize(32, 32); // Deliberately non scaling pImage->SetDrawFriend(false); iImageIndex = m_pImageList->AddImage(pImage); m_mapAvatarsToImageList.Insert(steamIDForPlayer, iImageIndex); } else { iImageIndex = m_mapAvatarsToImageList[iMapIndex]; } kv->SetInt("avatar", iImageIndex); } } } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CAvatarImagePanel::SetPlayer( C_BasePlayer *pPlayer ) { if ( GetImage() ) { ((CAvatarImage*)GetImage())->ClearAvatarSteamID(); } if ( pPlayer && steamapicontext->SteamUtils() ) { int iIndex = pPlayer->entindex(); player_info_t pi; if ( engine->GetPlayerInfo(iIndex, &pi) ) { if ( pi.friendsID ) { CSteamID steamIDForPlayer( pi.friendsID, 1, steamapicontext->SteamUtils()->GetConnectedUniverse(), k_EAccountTypeIndividual ); if ( !GetImage() ) { CAvatarImage *pImage = new CAvatarImage(); SetImage( pImage ); } CAvatarImage *pAvImage = ((CAvatarImage*)GetImage()); pAvImage->SetAvatarSteamID( steamIDForPlayer ); // Indent the image. These are deliberately non-resolution-scaling. pAvImage->SetAvatarSize( 32, 32 ); // Deliberately non scaling SetSize( pAvImage->GetWide(), GetTall() ); } } } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CClientScoreBoardDialog::UpdatePlayerAvatar( int playerIndex, KeyValues *kv ) { // Update their avatar if ( kv && ShowAvatars() && steamapicontext->SteamFriends() && steamapicontext->SteamUtils() ) { player_info_t pi; if ( engine->GetPlayerInfo( playerIndex, &pi ) ) { if ( pi.friendsID ) { CSteamID steamIDForPlayer( pi.friendsID, 1, steamapicontext->SteamUtils()->GetConnectedUniverse(), k_EAccountTypeIndividual ); // See if the avatar's changed int iAvatar = steamapicontext->SteamFriends()->GetFriendAvatar( steamIDForPlayer, k_EAvatarSize32x32 ); if ( m_iImageAvatars[playerIndex] != iAvatar ) { m_iImageAvatars[playerIndex] = iAvatar; // Now see if we already have that avatar in our list int iIndex = m_mapAvatarsToImageList.Find( iAvatar ); if ( iIndex == m_mapAvatarsToImageList.InvalidIndex() ) { CAvatarImage *pImage = new CAvatarImage(); pImage->SetAvatarSteamID( steamIDForPlayer ); pImage->SetAvatarSize( 32, 32 ); // Deliberately non scaling int iImageIndex = m_pImageList->AddImage( pImage ); m_mapAvatarsToImageList.Insert( iAvatar, iImageIndex ); } } int iIndex = m_mapAvatarsToImageList.Find( iAvatar ); if ( iIndex != m_mapAvatarsToImageList.InvalidIndex() ) { kv->SetInt( "avatar", m_mapAvatarsToImageList[iIndex] ); CAvatarImage *pAvIm = (CAvatarImage *)m_pImageList->GetImage( m_mapAvatarsToImageList[iIndex] ); pAvIm->UpdateFriendStatus(); } } } } }