summaryrefslogtreecommitdiff
path: root/game/client/tf/vgui/charinfo_loadout_subpanel.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/tf/vgui/charinfo_loadout_subpanel.h')
-rw-r--r--game/client/tf/vgui/charinfo_loadout_subpanel.h177
1 files changed, 177 insertions, 0 deletions
diff --git a/game/client/tf/vgui/charinfo_loadout_subpanel.h b/game/client/tf/vgui/charinfo_loadout_subpanel.h
new file mode 100644
index 0000000..ec7581f
--- /dev/null
+++ b/game/client/tf/vgui/charinfo_loadout_subpanel.h
@@ -0,0 +1,177 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef CHARINFO_LOADOUT_SUBPANEL_H
+#define CHARINFO_LOADOUT_SUBPANEL_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <game/client/iviewport.h>
+#include "vgui_controls/PropertyPage.h"
+#include <vgui_controls/Button.h>
+#include "tf_controls.h"
+#include "tf_shareddefs.h"
+#include "item_pickup_panel.h"
+#include "backpack_panel.h"
+#include "class_loadout_panel.h"
+#include "crafting_panel.h"
+#include "charinfo_armory_subpanel.h"
+
+#define NUM_CLASSES_IN_LOADOUT_PANEL (TF_LAST_NORMAL_CLASS-1) // We don't allow unlockables for the civilian
+
+class CImageButton : public vgui::Button
+{
+private:
+ DECLARE_CLASS_SIMPLE( CImageButton, vgui::Button );
+
+public:
+ CImageButton( vgui::Panel *parent, const char *panelName );
+
+ virtual void ApplySettings( KeyValues *inResourceData );
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+ virtual void OnSizeChanged( int newWide, int newTall );
+
+ void SetActiveImage( const char *imagename );
+ void SetInactiveImage( const char *imagename );
+ void SetActiveImage( vgui::IImage *image );
+ void SetInactiveImage( vgui::IImage *image );
+
+public:
+ virtual void Paint();
+
+private:
+ vgui::IImage *m_pActiveImage;
+ char *m_pszActiveImageName;
+
+ vgui::IImage *m_pInactiveImage;
+ char *m_pszInactiveImageName;
+
+ bool m_bScaleImage;
+ Color m_ActiveDrawColor;
+ Color m_InactiveDrawColor;
+};
+
+enum charinfo_activepanels_t
+{
+ CHAP_LOADOUT,
+ CHAP_BACKPACK,
+ CHAP_CRAFTING,
+ CHAP_ARMORY,
+};
+
+enum charinfosubbuttons_t
+{
+ CHSB_BACKPACK,
+ CHSB_CRAFTING,
+ CHSB_ARMORY,
+ CHSB_TRADING,
+
+ CHSB_NUM_BUTTONS
+};
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class CCharInfoLoadoutSubPanel : public vgui::PropertyPage
+{
+ DECLARE_CLASS_SIMPLE( CCharInfoLoadoutSubPanel, vgui::PropertyPage );
+public:
+ CCharInfoLoadoutSubPanel(Panel *parent);
+ virtual ~CCharInfoLoadoutSubPanel();
+
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+ virtual void OnCommand( const char *command );
+ virtual void PerformLayout( void );
+ virtual void OnCursorMoved( int x, int y );
+
+ void SetClassIndex( int iClassIndex, bool bOpenClassLoadout );
+ void SetTeamIndex( int iTeamIndex );
+ void OpenToBackpack( void ) { OpenSubPanel( CHAP_BACKPACK ); }
+ void OpenToCrafting( void ) { OpenSubPanel( CHAP_CRAFTING ); }
+ void OpenToArmory( int iItemDef = 0 ) { m_iArmoryItemDef = iItemDef; OpenSubPanel( CHAP_ARMORY ); }
+ void OpenSubPanel( charinfo_activepanels_t iPanel );
+ void UpdateModelPanels( bool bOpenClassLoadout = true );
+
+ CClassLoadoutPanel *GetClassLoadoutPanel( void ) { return m_pClassLoadoutPanel; }
+ CBackpackPanel *GetBackpackPanel( void ) { return m_pBackpackPanel; }
+ CCraftingPanel *GetCraftingPanel( void ) { return m_pCraftingPanel; }
+ CArmoryPanel *GetArmoryPanel( void ) { return m_pArmoryPanel; }
+
+ void UpdateLabelFromClass( int nClass );
+ void UpdateLabelFromSubButton( int nButton );
+ virtual void OnTick( void );
+ void RecalculateTargetClassLayout( void );
+ void RecalculateTargetClassLayoutAtPos( int x, int y );
+ void MoveCharacterSelection( int nDirection );
+ void OnKeyCodeTyped( vgui::KeyCode code );
+ void OnKeyCodePressed( vgui::KeyCode code );
+
+ bool ShouldShowExplanations( void ) { return (m_iShowingPanel == CHAP_LOADOUT && m_iCurrentClassIndex == TF_CLASS_UNDEFINED); }
+
+ charinfo_activepanels_t GetShowingPanel() const { return m_iShowingPanel; }
+ int GetCurrentClassIndex() const { return m_iCurrentClassIndex; }
+
+ MESSAGE_FUNC( OnPageShow, "PageShow" );
+ MESSAGE_FUNC( OnSelectionStarted, "SelectionStarted" );
+ MESSAGE_FUNC( OnSelectionEnded, "SelectionEnded" );
+ MESSAGE_FUNC( OnCancelSelection, "CancelSelection" );
+ MESSAGE_FUNC( OnOpenCrafting, "OpenCrafting" );
+ MESSAGE_FUNC( OnCraftingClosed, "CraftingClosed" );
+ MESSAGE_FUNC( OnArmoryClosed, "ArmoryClosed" );
+ MESSAGE_FUNC( OnCharInfoClosing, "CharInfoClosing" );
+
+private:
+ void RequestInventoryRefresh();
+
+ CImageButton *m_pClassButtons[NUM_CLASSES_IN_LOADOUT_PANEL+1];
+ CImageButton *m_pSubButtons[CHSB_NUM_BUTTONS];
+ CExLabel *m_pButtonLabels[CHSB_NUM_BUTTONS];
+ int m_iOverSubButton;
+ int m_iClassLayout[NUM_CLASSES_IN_LOADOUT_PANEL+1][4];
+ bool m_bClassLayoutDirty;
+ bool m_bSnapClassLayout;
+ bool m_bRequestingInventoryRefresh;
+ int m_iCurrentClassIndex;
+ int m_iCurrentTeamIndex;
+ charinfo_activepanels_t m_iShowingPanel;
+ charinfo_activepanels_t m_iPrevShowingPanel;
+ CClassLoadoutPanel *m_pClassLoadoutPanel;
+ CBackpackPanel *m_pBackpackPanel;
+ CCraftingPanel *m_pCraftingPanel;
+ CArmoryPanel *m_pArmoryPanel;
+ vgui::Label *m_pSelectLabel;
+ vgui::Label *m_pLoadoutChangesLabel;
+ vgui::Label *m_pNoSteamLabel;
+ vgui::Label *m_pNoGCLabel;
+ vgui::Label *m_pClassLabel;
+ CExLabel *m_pItemsLabel;
+ int m_iMouseXPos;
+ int m_iMouseYPos;
+ int m_iLabelSetToClass;
+ int m_iClassLabelYPos;
+ int m_iItemLabelYPos;
+ Color m_ItemColorNone;
+ Color m_ItemColor;
+ float m_flStartExplanationsAt;
+ int m_iArmoryItemDef;
+
+ CPanelAnimationVarAliasType( int, m_iSelectLabelY, "selectlabely_default", "0", "proportional_int" );
+ CPanelAnimationVarAliasType( int, m_iSelectLabelOnChangesY, "selectlabely_onchanges", "0", "proportional_int" );
+
+ CPanelAnimationVarAliasType( int, m_iClassYPos, "class_ypos", "0", "proportional_int" );
+ CPanelAnimationVarAliasType( int, m_iClassXDelta, "class_xdelta", "0", "proportional_int" );
+ CPanelAnimationVarAliasType( int, m_iClassWideMin, "class_wide_min", "0", "proportional_int" );
+ CPanelAnimationVarAliasType( int, m_iClassWideMax, "class_wide_max", "0", "proportional_int" );
+ CPanelAnimationVarAliasType( int, m_iClassTallMin, "class_tall_min", "0", "proportional_int" );
+ CPanelAnimationVarAliasType( int, m_iClassTallMax, "class_tall_max", "0", "proportional_int" );
+ CPanelAnimationVarAliasType( int, m_iClassDistanceMin, "class_distance_min", "0", "proportional_int" );
+ CPanelAnimationVarAliasType( int, m_iClassDistanceMax, "class_distance_max", "0", "proportional_int" );
+};
+
+#endif // CHARINFO_LOADOUT_SUBPANEL_H