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.
151 lines
4.9 KiB
151 lines
4.9 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef CHARINFO_ARMORY_SUBPANEL_H |
|
#define CHARINFO_ARMORY_SUBPANEL_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 "tf_controls.h" |
|
#include "tf_shareddefs.h" |
|
#include "backpack_panel.h" |
|
#include "class_loadout_panel.h" |
|
|
|
enum armory_filters_t |
|
{ |
|
// These are listed in the dropdown, for players to select |
|
ARMFILT_ALL_ITEMS, |
|
ARMFILT_WEAPONS, |
|
ARMFILT_HEADGEAR, |
|
ARMFILT_MISCITEMS, |
|
ARMFILT_ACTIONITEMS, |
|
ARMFILT_CRAFTITEMS, |
|
ARMFILT_TOOLS, |
|
ARMFILT_CLASS_ALL, |
|
ARMFILT_CLASS_SCOUT, |
|
ARMFILT_CLASS_SNIPER, |
|
ARMFILT_CLASS_SOLDIER, |
|
ARMFILT_CLASS_DEMOMAN, |
|
ARMFILT_CLASS_MEDIC, |
|
ARMFILT_CLASS_HEAVY, |
|
ARMFILT_CLASS_PYRO, |
|
ARMFILT_CLASS_SPY, |
|
ARMFILT_CLASS_ENGINEER, |
|
ARMFILT_DONATIONITEMS, |
|
|
|
ARMFILT_NUM_IN_DROPDOWN, |
|
|
|
ARMFILT_CUSTOM, |
|
ARMFILT_TOTAL, |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CArmoryPanel : public vgui::EditablePanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CArmoryPanel, vgui::EditablePanel ); |
|
public: |
|
CArmoryPanel(Panel *parent, const char *panelName); |
|
virtual ~CArmoryPanel(); |
|
|
|
// Show the armory with one of the default filters set |
|
void ShowPanel( int iItemDef, armory_filters_t nFilter = ARMFILT_ALL_ITEMS ); |
|
|
|
// Show the armory with a custom list of item definitions, and a custom filter string |
|
void ShowPanel( const char *pszFilterString, CUtlVector<item_definition_index_t> *vecItems ); |
|
|
|
// Select the given item and jump to the appropriate page |
|
void JumpToItem( int iItemDef, armory_filters_t nFilter ); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
virtual void ApplySettings( KeyValues *inResourceData ); |
|
virtual void OnCommand( const char *command ); |
|
virtual void PerformLayout( void ); |
|
|
|
bool ShouldShowExplanations( void ) { return true; } |
|
void UpdateItemList( void ); |
|
void UpdateSelectedItem( void ); |
|
void AllowGotoStore( void ) { m_bAllowGotoStore = true; } |
|
|
|
MESSAGE_FUNC_PTR( OnItemPanelEntered, "ItemPanelEntered", panel ); |
|
MESSAGE_FUNC_PTR( OnItemPanelExited, "ItemPanelExited", panel ); |
|
MESSAGE_FUNC_PTR( OnItemPanelMouseReleased, "ItemPanelMouseReleased", panel ); |
|
MESSAGE_FUNC_PARAMS( OnTextChanged, "TextChanged", data ); |
|
MESSAGE_FUNC_PARAMS( OnItemLinkClicked, "URLClicked", pParams ); |
|
|
|
MESSAGE_FUNC( OnClosing, "Closing" ); |
|
|
|
private: |
|
void OnShowPanel( void ); |
|
void MoveItem( int iDelta ); |
|
void UpdateDataBlock( void ); |
|
bool CalculateDataText( void ); |
|
|
|
void SetFilterTo( int iItemDef, armory_filters_t nFilter ); |
|
void SetBorderForItem( CItemModelPanel *pItemPanel, bool bMouseOver ); |
|
bool DefPassesFilter( const CTFItemDefinition *pDef, armory_filters_t iFilter ); |
|
|
|
void SetupComboBox( const char *pszCustomAddition ); |
|
|
|
void SetSelectedItem( CEconItemView* newItem ); |
|
void SetSelectedItem( int newIndex ); |
|
|
|
private: |
|
float m_flStartExplanationsAt; |
|
|
|
CEconItemView m_SelectedItem; |
|
CEconItemView m_PreviousItem; |
|
CItemModelPanel *m_pSelectedItemModelPanel; |
|
CItemModelPanel *m_pSelectedItemImageModelPanel; |
|
|
|
// Filters |
|
vgui::ComboBox *m_pFilterComboBox; |
|
armory_filters_t m_CurrentFilter; |
|
armory_filters_t m_OldFilter; |
|
int m_iFilterPage; |
|
CExButton *m_pNextPageButton; |
|
CExButton *m_pPrevPageButton; |
|
CUtlVector<item_definition_index_t> m_FilteredItemList; |
|
CUtlVector<item_definition_index_t> m_CustomFilteredList; |
|
|
|
// Thumbnails |
|
KeyValues *m_pThumbnailModelPanelKVs; |
|
bool m_bReapplyItemKVs; |
|
CUtlVector<CItemModelPanel*> m_pThumbnailModelPanels; |
|
CItemModelPanel *m_pMouseOverItemPanel; |
|
CItemModelPanelToolTip *m_pMouseOverTooltip; |
|
|
|
bool m_bEventLogging; // Handles sending entered/exited stats messages. |
|
|
|
// Data display |
|
vgui::EditablePanel *m_pDataPanel; |
|
CEconItemDetailsRichText *m_pDataTextRichText; |
|
CExButton *m_pViewSetButton; |
|
|
|
bool m_bAllowGotoStore; |
|
CExButton *m_pStoreButton; |
|
|
|
CPanelAnimationVar( int, m_iThumbnailRows, "thumbnails_rows", "1" ); |
|
CPanelAnimationVar( int, m_iThumbnailColumns, "thumbnails_columns", "1" ); |
|
CPanelAnimationVarAliasType( int, m_iThumbnailX, "thumbnails_x", "0", "proportional_xpos" ); |
|
CPanelAnimationVarAliasType( int, m_iThumbnailY, "thumbnails_y", "0", "proportional_ypos" ); |
|
CPanelAnimationVarAliasType( int, m_iThumbnailDeltaX, "thumbnails_delta_x", "0", "proportional_int" ); |
|
CPanelAnimationVarAliasType( int, m_iThumbnailDeltaY, "thumbnails_delta_y", "0", "proportional_int" ); |
|
Color m_colThumbnailBG; |
|
Color m_colThumbnailBGMouseover; |
|
Color m_colThumbnailBGSelected; |
|
|
|
Color m_colSetName; |
|
}; |
|
|
|
#endif // CHARINFO_ARMORY_SUBPANEL_H
|
|
|