diff options
Diffstat (limited to 'game/client/tf/vgui/store/tf_store_page_base.h')
| -rw-r--r-- | game/client/tf/vgui/store/tf_store_page_base.h | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/game/client/tf/vgui/store/tf_store_page_base.h b/game/client/tf/vgui/store/tf_store_page_base.h new file mode 100644 index 0000000..9a4bcbe --- /dev/null +++ b/game/client/tf/vgui/store/tf_store_page_base.h @@ -0,0 +1,121 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef TF_STORE_PAGE_H +#define TF_STORE_PAGE_H +#ifdef _WIN32 +#pragma once +#endif + +#include <game/client/iviewport.h> +#include "vgui_controls/PropertyPage.h" +#include <vgui_controls/Button.h> +#include <vgui_controls/ComboBox.h> +#include <vgui_controls/ImagePanel.h> +#include "econ_controls.h" +#include "econ_ui.h" +#include "econ_store.h" +#include "item_model_panel.h" +#include "store/store_page.h" +#include "tf_shareddefs.h" + +class CItemModelPanel; +class CItemModelPanelToolTip; +class CTFPlayerModelPanel; +class CStorePreviewItemPanel; +class CStoreItemControlsPanel; + +extern const char *g_pszTipsClassImages[]; + +#define FILTER_ALLCLASS_ITEMS TF_LAST_NORMAL_CLASS +#define FILTER_UNOWNED_ITEMS (TF_LAST_NORMAL_CLASS + 1) + +//----------------------------------------------------------------------------- +// Purpose: A player class preview icon in the store's item preview panel +//----------------------------------------------------------------------------- +class CStorePreviewClassIcon : public CBaseStorePreviewIcon +{ + DECLARE_CLASS_SIMPLE( CStorePreviewClassIcon, CBaseStorePreviewIcon ); +public: + CStorePreviewClassIcon( vgui::Panel *parent, const char *name ) : CBaseStorePreviewIcon(parent,name) + { + m_pImagePanel = new vgui::ImagePanel( this, "classimage" ); + m_pImagePanel->SetShouldScaleImage( true ); + m_pImagePanel->SetMouseInputEnabled( false ); + m_pImagePanel->SetKeyBoardInputEnabled( false ); + m_iClass = 0; + } + + virtual void OnCursorEntered() + { + BaseClass::OnCursorEntered(); + PostActionSignal(new KeyValues("ShowClassIconMouseover", "class", m_iClass)); + } + virtual void OnCursorExited() + { + BaseClass::OnCursorExited(); + PostActionSignal(new KeyValues("HideClassIconMouseover")); + } + virtual void OnMouseReleased(vgui::MouseCode code) + { + BaseClass::OnMouseReleased(code); + PostActionSignal(new KeyValues("ClassIconSelected", "class", m_iClass)); + } + + virtual void SetInternalImageBounds( int iX, int iY, int iWide, int iTall ) + { + m_pImagePanel->SetBounds( iX, iY, iWide, iTall ); + } + + void SetClass( int iClass ) + { + if ( iClass >= TF_FIRST_NORMAL_CLASS && iClass < TF_LAST_NORMAL_CLASS ) + { + m_pImagePanel->SetImage( g_pszTipsClassImages[iClass] ); + } + else + { + m_pImagePanel->SetImage( "class_portraits/all_class" ); + } + m_iClass = iClass; + } + + int GetClass( void ) { return m_iClass; } + +private: + vgui::ImagePanel *m_pImagePanel; + int m_iClass; +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CTFStorePageBase : public CStorePage +{ + DECLARE_CLASS_SIMPLE( CTFStorePageBase, CStorePage ); +protected: + // CTFStorePageBase should not be instantiated directly + CTFStorePageBase( Panel *parent, const CEconStoreCategoryManager::StoreCategory_t *pPageData, const char *pPreviewItemResFile = NULL ); + +public: + + virtual void OnCommand( const char *command ); + virtual void ShowPreview( int iClass, const econ_store_entry_t* pEntry ); + + MESSAGE_FUNC( OnPageShow, "PageShow" ); + MESSAGE_FUNC_PTR( OnItemDetails, "ItemDetails", panel ); + + virtual void UpdateFilterComboBox( void ); + virtual void GetFiltersForDef( GameItemDefinition_t *pDef, CUtlVector<int> *pVecFilters ); + virtual void OnTick( void ); + virtual int GetNumPrimaryFilters( void ) { return FILTER_UNOWNED_ITEMS+1; } + +protected: + float m_flStartExplanationsAt; +}; + +#endif // TF_STORE_PAGE_H |