Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.
 
 
 
 
 
 

121 lines
3.5 KiB

//========= 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