diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/tf/tf_abuse_report.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/tf/tf_abuse_report.cpp')
| -rw-r--r-- | game/client/tf/tf_abuse_report.cpp | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/game/client/tf/tf_abuse_report.cpp b/game/client/tf/tf_abuse_report.cpp new file mode 100644 index 0000000..b843d6b --- /dev/null +++ b/game/client/tf/tf_abuse_report.cpp @@ -0,0 +1,116 @@ +//========= 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(); +} + |