//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef HINTITEMBASE_H #define HINTITEMBASE_H #ifdef _WIN32 #pragma once #endif #include #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