114 lines
3.1 KiB
C++
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
|