summaryrefslogtreecommitdiff
path: root/game/client/tf/vgui/sc_hinticon.cpp
blob: 703c1215e115ee2a25a335967de45477cb272d8c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//=============================================================================//

#include "cbase.h"
#include "sc_hinticon.h"
#include <vgui/IVGui.h>
#include "inputsystem/iinputsystem.h"

using namespace vgui;

DECLARE_BUILD_FACTORY( CSCHintIcon );

//-----------------------------------------------------------------------------
CSCHintIcon::CSCHintIcon( vgui::Panel *parent, const char* panelName ) :
	vgui::Label( parent, panelName, L"" )
	, m_bIsActionMapped( false )
	, m_actionSetHandle( 0 )
{
	m_szActionName[0] = '\0';
}

//-----------------------------------------------------------------------------
// Purpose: 
//-----------------------------------------------------------------------------
void CSCHintIcon::ApplySettings( KeyValues *inResourceData )
{
	BaseClass::ApplySettings( inResourceData );

	auto szActionName = inResourceData->GetString( "actionName", "" );
	Q_strncpy( m_szActionName, szActionName, nMaxActionNameLength );

	auto szActionSet = inResourceData->GetString( "actionSet", nullptr );
	if ( szActionSet )
	{
		m_actionSetHandle = g_pInputSystem->GetActionSetHandle( szActionSet );
	}
	else
	{
		m_actionSetHandle = 0;
	}
}

//-----------------------------------------------------------------------------
// Purpose: 
//-----------------------------------------------------------------------------
void CSCHintIcon::ApplySchemeSettings( IScheme *pScheme )
{
	BaseClass::ApplySchemeSettings( pScheme );

	const wchar_t* iconText = L"";
	m_bIsActionMapped = false;
	if ( m_actionSetHandle )
	{
		auto origin = g_pInputSystem->GetSteamControllerActionOrigin( m_szActionName, m_actionSetHandle );
		if ( origin != k_EControllerActionOrigin_None )
		{
			iconText = g_pInputSystem->GetSteamControllerFontCharacterForActionOrigin( origin );
			if ( iconText && iconText[0] )
			{
				m_bIsActionMapped = true;
			}
		}
	}

	SetText( iconText );
}