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.
178 lines
6.1 KiB
178 lines
6.1 KiB
5 years ago
|
//========= 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
|