Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.

117 lines
3.1 KiB

5 years ago
//========= 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();
}