source-engine/game/client/econ/base_loadout_panel.h
FluorescentCIAAfricanAmerican 3bf9df6b27 1
2020-04-22 12:56:21 -04:00

116 lines
4.9 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef BASE_LOADOUT_PANEL_H
#define BASE_LOADOUT_PANEL_H
#ifdef _WIN32
#pragma once
#endif
#include "vgui_controls/EditablePanel.h"
#include "econ_controls.h"
#include "item_pickup_panel.h"
#include "GameEventListener.h"
#include "tf_item_card_panel.h"
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
class CBaseLoadoutPanel : public vgui::EditablePanel, public CGameEventListener
{
DECLARE_CLASS_SIMPLE( CBaseLoadoutPanel, vgui::EditablePanel );
public:
CBaseLoadoutPanel( vgui::Panel *parent, const char *panelName );
virtual ~CBaseLoadoutPanel();
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
virtual void ApplySettings( KeyValues *inResourceData );
virtual void PerformLayout( void );
virtual void OnCommand( const char *command );
void ShowPanel( int iClass, bool bBackpack, bool bReturningFromArmory = false );
virtual void FireGameEvent( IGameEvent *event );
virtual int GetNumSlotsPerPage( void ) { return 1; }
virtual int GetNumColumns( void ) { return 99; }
virtual int GetNumRows( void ) { return 99; }
virtual int GetNumPages( void ) { return 1; }
virtual int GetCurrentPage() const { return m_nCurrentPage; }
virtual void SetCurrentPage( int nNewPage );
virtual int GetNumItemPanels( void ) { Assert(0); return 0; };
virtual void OnShowPanel( bool bVisible, bool bReturningFromArmory ) { return; }
virtual void PostShowPanel( bool bVisible ) { return; }
CItemModelPanel *FindBestPanelNavigationForDirection( const CItemModelPanel *pCurrentPanel, const Vector2D &vPos, const Vector2D &vDirection );
void LinkModelPanelControllerNavigation( bool bForceRelink );
virtual void AddNewItemPanel( int iPanelIndex );
MESSAGE_FUNC_PTR( OnItemPanelEntered, "ItemPanelEntered", panel );
MESSAGE_FUNC_PTR( OnItemPanelExited, "ItemPanelExited", panel );
void HideMouseOverPanel( void );
CItemModelPanel *GetMouseOverPanel( void ) { return m_pMouseOverItemPanel; }
CItemModelPanelToolTip *GetMouseOverToolTipPanel( void ) { return m_pMouseOverTooltip; }
protected:
virtual void UpdateModelPanels( void ) { return; }
virtual void SetBorderForItem( CItemModelPanel *pItemPanel, bool bMouseOver );
virtual bool IsIgnoringItemPanelEnters( void ) { return false; }
virtual void ApplyKVsToItemPanels( void );
virtual void CreateItemPanels( void );
virtual void OnItemSelectionChanged() {}
bool HandleItemSelectionKeyPressed( vgui::KeyCode code ) ;
bool HandleItemSelectionKeyReleased( vgui::KeyCode code ) ;
// helpers to get selected items
int GetFirstSelectedItemIndex( bool bIncludeEmptySlots );
CItemModelPanel *GetFirstSelectedItemModelPanel( bool bIncludeEmptySlots );
CEconItemView *GetFirstSelectedItem();
bool GetAdjacentItemIndex( int nIndex, int nPage, int *pnNewIndex, int *pnNewPage, int dx, int dy );
void SelectAdjacentItem( int dx, int dy );
protected:
CUtlVector<CItemModelPanel*> m_pItemModelPanels;
vgui::Label *m_pTitleLabel;
KeyValues *m_pItemModelPanelKVs;
bool m_bReapplyItemKVs;
bool m_bTooltipKeyPressed;
int m_nCurrentPage;
vgui::Label *m_pCaratLabel;
vgui::Label *m_pClassLabel;
CPanelAnimationVarAliasType( int, m_iItemXPosOffcenterA, "item_xpos_offcenter_a", "0", "proportional_int" );
CPanelAnimationVarAliasType( int, m_iItemXPosOffcenterB, "item_xpos_offcenter_b", "0", "proportional_int" );
CPanelAnimationVarAliasType( int, m_iItemYPos, "item_ypos", "0", "proportional_int" );
CPanelAnimationVarAliasType( int, m_iItemYDelta, "item_ydelta", "0", "proportional_int" );
CPanelAnimationVarAliasType( int, m_iButtonXPosOffcenter, "button_xpos_offcenter", "0", "proportional_int" );
CPanelAnimationVarAliasType( int, m_iButtonYPos, "button_ypos", "0", "proportional_int" );
CPanelAnimationVarAliasType( int, m_iButtonYDelta, "button_ydelta", "0", "proportional_int" );
CPanelAnimationVarAliasType( int, m_iItemBackpackOffcenterX, "item_backpack_offcenter_x", "0", "proportional_int" );
CPanelAnimationVarAliasType( int, m_iItemBackpackXDelta, "item_backpack_xdelta", "0", "proportional_int" );
CPanelAnimationVarAliasType( int, m_iItemBackpackYDelta, "item_backpack_ydelta", "0", "proportional_int" );
CPanelAnimationVar( bool, m_bItemsOnly, "items_only", "0" );
CPanelAnimationVar( bool, m_bForceShowBackpackRarities, "force_show_backpack_rarities", "0" );
CPanelAnimationVarAliasType( int, m_iDeleteButtonXPos, "button_override_delete_xpos", "0", "proportional_int" );
protected:
CItemModelPanel *m_pMouseOverItemPanel;
CItemModelPanelToolTip *m_pMouseOverTooltip;
CItemModelPanel *m_pItemPanelBeingMousedOver;
#ifdef STAGING_ONLY
CTFItemCardPanel *m_pMouseOverCardPanel;
CItemCardPanelToolTip *m_pMouseOverCardTooltip;
#endif
};
#endif // BASE_LOADOUT_PANEL_H