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.
160 lines
4.9 KiB
160 lines
4.9 KiB
5 years ago
|
//========= 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
|