You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
3.9 KiB
147 lines
3.9 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef C_TF_BASEHINT_H |
|
#define C_TF_BASEHINT_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include <vgui_controls/Panel.h> |
|
#include <vgui_controls/PHandle.h> |
|
#include "utlvector.h" |
|
|
|
class C_BaseTFPlayer; |
|
class C_BaseEntity; |
|
class ITFHintItem; |
|
class KeyValues; |
|
namespace vgui |
|
{ |
|
class Label; |
|
} |
|
|
|
class C_TFBaseHint; |
|
|
|
typedef bool (*HINTCOMPLETIONFUNCTION)( C_TFBaseHint *hint ); |
|
|
|
#define TFBASEHINT_DEFAULT_WIDTH 400 |
|
#define TFBASEHINT_DEFAULT_HEIGHT 300 |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Base TF Hint UI Element |
|
// hints must position themselves and are responsible for any "sub objects" |
|
//----------------------------------------------------------------------------- |
|
class C_TFBaseHint : public vgui::Panel |
|
{ |
|
typedef vgui::Panel BaseClass; |
|
public: |
|
enum |
|
{ |
|
BORDER = 2, |
|
CAPTION = 17 |
|
}; |
|
|
|
// Factory for hints |
|
static C_TFBaseHint *CreateHint( int id, const char *subsection, int entity ); |
|
|
|
// Construction |
|
C_TFBaseHint( int id, int priority, int entity, HINTCOMPLETIONFUNCTION pfn = NULL ); |
|
virtual ~C_TFBaseHint( void ); |
|
|
|
// Initialization |
|
virtual void ParseFromData( KeyValues *pkv ); |
|
|
|
// Redraw self |
|
virtual void PaintBackground(); |
|
virtual void PerformLayout(); |
|
virtual void GetClientArea( int&x, int& y, int& w, int &h ); |
|
virtual void SetTitle( const char *title ); |
|
|
|
// Panel will move itself to spot over movementtime |
|
virtual void SetDesiredPosition( int x, int y, float movementtime = 0.3f ); |
|
|
|
// Target element for hint |
|
virtual void SetHintTarget( vgui::Panel *panel ); |
|
|
|
// Scheme |
|
virtual void ApplySchemeSettings(vgui::IScheme *pScheme); |
|
|
|
// Think |
|
virtual void OnTick(); |
|
// Derived classes should set m_bCompleted here for entire hint |
|
virtual void CheckForCompletion( void ); |
|
|
|
// Data access |
|
virtual int GetID( void ); |
|
virtual void SetID( int id ); |
|
|
|
virtual int GetPriority( void ); |
|
virtual void SetPriority( int priority ); |
|
|
|
virtual int GetEntity( void ); |
|
virtual C_BaseEntity *GetBaseEntity( void ); |
|
virtual void SetEntity( int entity ); |
|
virtual void SetBaseEntity( C_BaseEntity *entity ); |
|
|
|
// Install a function used to determine if the global hint requirements have |
|
// been met |
|
virtual bool GetCompleted( void ); |
|
virtual void SetCompleted( bool completed ); |
|
virtual void SetCompletionFunction( HINTCOMPLETIONFUNCTION pfn ); |
|
|
|
// Accessors for hint items themselves |
|
virtual void AddHintItem( ITFHintItem *item ); |
|
virtual void RemoveHintItem( int index ); |
|
virtual int GetNumHintItems( void ); |
|
virtual void RemoveAllHintItems( bool deleteitems ); |
|
virtual ITFHintItem *GetHintItem( int index ); |
|
|
|
protected: |
|
// Move current position toward desirec position |
|
virtual void AnimatePosition( void ); |
|
virtual float GetMovementFraction( void ); |
|
|
|
// In the process of moving |
|
bool m_bMoving; |
|
|
|
// Amount of move time remaining |
|
float m_flMoveRemaining; |
|
// Total move time |
|
float m_flMoveTotal; |
|
// Start/end positions for panel movement |
|
int m_nMoveStart[2]; |
|
int m_nMoveEnd[2]; |
|
|
|
private: |
|
// ID of the hint |
|
int m_nID; |
|
// Priority of the hint |
|
int m_nPriority; |
|
// Associated entity |
|
int m_nEntity; |
|
// Has the hint been completed |
|
bool m_bCompleted; |
|
// Object hint is associated with |
|
void *m_pObject; |
|
// No mouse |
|
vgui::HCursor m_CursorNone; |
|
// "Press [Esc]..." |
|
vgui::Label *m_pClearLabel; |
|
// Window caption |
|
vgui::Label *m_pCaption; |
|
|
|
// Safe handle to target object |
|
vgui::PHandle m_hTarget; |
|
|
|
// Completion function |
|
HINTCOMPLETIONFUNCTION m_pfnCompletion; |
|
|
|
// List of items |
|
CUtlVector< ITFHintItem * > m_Hints; |
|
}; |
|
|
|
#endif // C_TF_BASEHINT_H
|
|
|