Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Generic in-game abuse reporting
//
// $NoKeywords: $
//=============================================================================//
#include "cbase.h"
#include "tf_abuse_report.h"
#include "abuse_report_ui.h"
#include "game/client/iviewport.h"
#include "tf_shareddefs.h"
#include "tf_hud_mainmenuoverride.h"
#include "tf_gcmessages.h"
#include "c_tf_player.h"
#include "tf_quickplay_shared.h"
#include "tf_gc_client.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
/// Declare singleton object
CTFAbuseReportManager theAbuseReportManager;
CTFAbuseReportManager::CTFAbuseReportManager() {} CTFAbuseReportManager::~CTFAbuseReportManager() {}
bool CTFAbuseReportManager::CreateAndPopulateIncident() { if ( !CAbuseReportManager::CreateAndPopulateIncident() ) { return false; }
if ( m_bTestReport ) { return true; }
for ( int iPlayer = 0 ; iPlayer < m_pIncidentData->m_vecPlayers.Count() ; ++iPlayer ) {
AbuseIncidentData_t::PlayerData_t *p = &m_pIncidentData->m_vecPlayers[iPlayer];
CPlayerInventory *pInv = InventoryManager()->GetInventoryForAccount( p->m_steamID.GetAccountID() ); //C_TFPlayer *pTFPlayer = dynamic_cast<C_TFPlayer *> ( UTIL_PlayerByIndex( p->m_iClientIndex ) );
//if ( pTFPlayer == NULL )
//{
// Assert( !p->m_bHasEntity );
// continue;
//}
//CTFPlayerInventory *pInv = pTFPlayer->Inventory();
if ( pInv == NULL ) { Warning( "No inventory data for player '%s'; we won't be able to report this person for inappropriate custom images\n", p->m_sPersona.String() ); continue; }
for ( int i = 0 ; i < pInv->GetItemCount() ; ++i) { CEconItemView *pItem = pInv->GetItem( i );
// Get custom texture ID, if any
uint64 hCustomtextureID = pItem->GetCustomUserTextureID();
// Most items won't have a custom texture
if ( hCustomtextureID == 0 ) { continue; }
// Discard duplicates, as it makes the UI confusing
bool bDup = false; for ( int j = 0 ; j < p->m_vecImages.Count() ; ++j ) { if ( p->m_vecImages[ j ].m_hUGCHandle == hCustomtextureID ) { bDup = true; break; } } if ( bDup ) { continue; }
AbuseIncidentData_t::PlayerImage_t img; img.m_eType = AbuseIncidentData_t::k_PlayerImageType_UGC; img.m_hUGCHandle = hCustomtextureID; p->m_vecImages.AddToTail( img ); } }
// Check if we can report abuse against the game server.
if (m_pIncidentData->m_adrGameServer.IsValid() && !GTFGCClientSystem()->BIsIPRecentMatchServer( m_pIncidentData->m_adrGameServer ) ) { m_pIncidentData->m_bCanReportGameServer = true; }
return true; }
void CTFAbuseReportManager::ActivateSubmitReportUI() { Assert( g_AbuseReportDlg.Get() == NULL ); Assert( m_pIncidentData != NULL );
IViewPortPanel *pMMOverride = ( gViewPortInterface->FindPanelByName( PANEL_MAINMENUOVERRIDE ) ); engine->ExecuteClientCmd("gameui_activate"); vgui::SETUP_PANEL( new CAbuseReportDlg( (CHudMainMenuOverride*)pMMOverride, m_pIncidentData ) ); Assert( g_AbuseReportDlg.Get() != NULL ); g_AbuseReportDlg->MakeModal(); }
|