hl2_src-leak-2017/src/game/client/tf2/hintitembase.h

114 lines
3.1 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef HINTITEMBASE_H
#define HINTITEMBASE_H
#ifdef _WIN32
#pragma once
#endif
#include <vgui_controls/Panel.h>
#include "itfhintitem.h"
class C_TFBaseHint;
class CHintItemBase;
namespace vgui
{
class Label;
}
#define DECLARE_HINTITEMFACTORY( className ) \
CHintItemBase *Create_##className##( vgui::Panel *parent, const char *panelName ) \
{ return new className( parent, panelName ); }
#define GET_HINTITEMFACTORY_NAME( className ) Create_##className
#define DECLARE_HINTFACTORY( className ) \
C_TFBaseHint *Create_##className##( int id, int entity ) \
{ return new className( id, 0, entity, NULL ); }
#define GET_HINTFACTORY_NAME( className ) Create_##className
//-----------------------------------------------------------------------------
// Purpose: A hint that shows up as a single line o text
//-----------------------------------------------------------------------------
class CHintItemBase : public vgui::Panel, public ITFHintItem
{
DECLARE_CLASS_GAMEROOT( CHintItemBase, vgui::Panel );
public:
CHintItemBase( vgui::Panel *parent, const char *panelName );
// Draw some extra stuff in the Bg
virtual void PaintBackground();
virtual void OnSizeChanged( int newWide, int newTall );
virtual void SetText( const char *text );
virtual void SetFormatString( const char *fmt );
virtual const char *GetFormatString( void );
// If using format string
virtual bool CheckKeyAndValue( const char *instring, int* keylength, const char **ppOutstring );
virtual void ComputeTitle( void );
virtual void SetAutoComplete( float elapsed_time );
// Scheme settings
virtual void ApplySchemeSettings(vgui::IScheme *pScheme);
// Helper
virtual const char *GetKeyNameForBinding( const char *binding );
// Implement ITFHintItem
virtual void ParseItem( KeyValues *pKeyValues );
virtual bool GetCompleted( void );
virtual void SetActive( bool active );
virtual bool GetActive( void );
virtual void Think( void );
virtual int GetHeight( void );
virtual void SetPosition( int x, int y );
virtual void DeleteThis( void );
virtual void SetItemNumber( int index );
virtual void SetVisible( bool visible );
virtual void SetHintTarget( vgui::Panel *panel );
virtual bool ShouldRenderPanelEffects( void );
virtual void SetKeyValue( const char *key, const char *value );
protected:
enum
{
MAX_TEXT_LENGTH = 256,
};
// Has the hint item been completed
bool m_bCompleted;
// Is the hint item active
bool m_bActive;
// Text of hint
vgui::Label *m_pLabel;
// Depends on type of hint
vgui::Panel *m_pObject;
// Time the hint was activated
float m_flActivateTime;
// vgui::Label *m_pIndex;
// Index of hint
//int m_nIndex;
bool m_bUseFormatString;
char m_szFormatString[ MAX_TEXT_LENGTH ];
bool m_bAutoComplete;
float m_flAutoCompleteTime;
vgui::HFont m_hSmallFont;
vgui::HFont m_hMarlettFont;
};
CHintItemBase *CreateHintItem( vgui::Panel *parent, const char *name );
#endif // HINTITEMBASE_H