diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/tf/vgui/tf_item_card_panel.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/tf/vgui/tf_item_card_panel.h')
| -rw-r--r-- | game/client/tf/vgui/tf_item_card_panel.h | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/game/client/tf/vgui/tf_item_card_panel.h b/game/client/tf/vgui/tf_item_card_panel.h new file mode 100644 index 0000000..602991e --- /dev/null +++ b/game/client/tf/vgui/tf_item_card_panel.h @@ -0,0 +1,159 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef TF_ITEM_CARD_PANEL_H +#define TF_ITEM_CARD_PANEL_H +#ifdef _WIN32 +#pragma once +#endif + +#include <vgui_controls/Panel.h> +#include <vgui_controls/EditablePanel.h> +#include "item_model_panel.h" +#include "tf_controls.h" + +class CEconItemView; +class CEmbeddedItemModelPanel; +namespace vgui +{ + class ScrollBar; + class ImagePanel; +} +class CIconPanel; + +using namespace vgui; + + +//----------------------------------------------------------------------------- +// Purpose: A simple container that contains repeating elements with common +// and individual characteristics +//----------------------------------------------------------------------------- +class CRepeatingContainer : public EditablePanel +{ + DECLARE_CLASS_SIMPLE( CRepeatingContainer, EditablePanel ); +public: + CRepeatingContainer( Panel *pParent, const char *pszName ); + virtual ~CRepeatingContainer(); + + virtual void ApplySettings( KeyValues *inResourceData ) OVERRIDE; + virtual void PerformLayout() OVERRIDE; + + Panel* GetRepeatingChild( int nIndex ) const { return m_vecChildren[ nIndex ]; } +private: + + enum ELayoutMethod_t + { + METHOD_EVEN, + METHOD_STEP, + }; + + CUtlVector< Panel* > m_vecChildren; + ELayoutMethod_t m_eLayoutMethod; + CPanelAnimationVarAliasType( int, m_iXStep, "x_step", "0", "proportional_xpos" ); +}; + +//----------------------------------------------------------------------------- +// Purpose: A representation of an econ item as a collectible card +//----------------------------------------------------------------------------- +class CTFItemCardPanel : public EditablePanel +{ + DECLARE_CLASS_SIMPLE( CTFItemCardPanel, EditablePanel ); +public: + CTFItemCardPanel( Panel *parent, const char *name ); + virtual ~CTFItemCardPanel( void ); + + virtual void ApplySchemeSettings( IScheme *pScheme ) OVERRIDE; + virtual void ApplySettings( KeyValues *inResourceData ) OVERRIDE; + virtual void PerformLayout( void ) OVERRIDE; + virtual void SetVisible( bool bVisible ) OVERRIDE; + virtual void SetMouseInputEnabled( bool state ) OVERRIDE; + + void SetItem( CEconItemView* pItem ); + CEconItemView* GetItem() { return m_pItem; } + + void PinCard( bool bPin ); + bool IsPinned() const { return m_bPinned; } +private: + + void UpdateDescription(); + void UpdateModelOrIcon(); + void LoadResFileForCurrentItem(); + + template < class T > + T* FindAndVerifyControl( Panel* pParent, const char* pszPanelName ); + + + CEconItemView* m_pItem; + + ImagePanel *m_pDropShadow; + CExImageButton *m_pCloseButton; + + ImagePanel *m_pBackground; + ImagePanel *m_pGrime; + ImagePanel *m_pRarityBackgroundOverlay; + EditablePanel *m_pMainContainer; + + EditablePanel *m_pCardTop; + CEmbeddedItemModelPanel *m_pItemModel; + + EditablePanel *m_pRarityContainer; + Label *m_pItemName; + Label *m_pRarityName; + + EditablePanel *m_pInfoContainer; + Label *m_pClassLabel; + CRepeatingContainer *m_pClassIconContainer; + Label *m_pTypeLabel; + Label *m_pTypeLabelValue; + Label *m_pExteriorLabel; + Label *m_pExteriorLabelValue; + + EditablePanel *m_pBottomContainer; + CExScrollingEditablePanel *m_pBottomScrollingContainer; + Label *m_pAttribsLabel; + Label *m_pEquipSlotLabel; + + bool m_bAllControlsValid; + bool m_bPinned; + + CPanelAnimationVarAliasType( int, m_iShadowOffset, "shadowoffset", "5", "proportional_int" ); +}; + +//----------------------------------------------------------------------------- +// Purpose: Item model panel tooltip. Calls setvisible on the controlled panel +// and positions it below/above the current panel. +//----------------------------------------------------------------------------- +class CItemCardPanelToolTip : public vgui::BaseTooltip +{ + DECLARE_CLASS_SIMPLE( CItemCardPanelToolTip, vgui::BaseTooltip ); +public: + CItemCardPanelToolTip(vgui::Panel *parent, const char *text = NULL); + + void SetText(const char *text) { return; } + const char *GetText() { return NULL; } + + virtual void PerformLayout(); + virtual void ShowTooltip( vgui::Panel *currentPanel ); + virtual void HideTooltip(); + + void SetupPanels( vgui::Panel *pParentPanel, CTFItemCardPanel *pMouseOverItemPanel ) { m_pParentPanel = pParentPanel; m_pMouseOverItemPanel = pMouseOverItemPanel; } + void SetPositioningStrategy( itempanel_tooltip_strategies_t iStrat ) { m_iPositioningStrategy = iStrat; } + +private: + void GetPosition( itempanel_tooltippos_t iTooltipPosition, CItemModelPanel *pItemPanel, int iItemX, int iItemY, int *iXPos, int *iYPos ); + bool ValidatePosition( CItemModelPanel *pItemPanel, int iItemX, int iItemY, int *iXPos, int *iYPos ); + +private: + CTFItemCardPanel *m_pMouseOverItemPanel; // This is the tooltip panel we make visible. Must be a CItemModelPanel. + vgui::Panel *m_pParentPanel; // This is the panel that we send item entered/exited messages to + vgui::DHANDLE<CItemModelPanel> m_hCurrentPanel; + + itempanel_tooltip_strategies_t m_iPositioningStrategy; + bool m_bHorizontalPreferLeft; +}; + +#endif // TF_ITEM_CARD_PANEL_H |