summaryrefslogtreecommitdiff
path: root/game/client/tf/vgui/testitem_dialog.h
blob: ca7a5188b074a7c40d3e5999f988750ef83da119 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//=============================================================================//

#ifndef TESTITEM_DIALOG_H
#define TESTITEM_DIALOG_H
#ifdef _WIN32
#pragma once
#endif

#include "vgui_controls/EditablePanel.h"
#include "vgui_controls/ScrollableEditablePanel.h"
#include "tf_controls.h"

enum testitem_entrysteps_t
{
	TI_STEP_MODELNAME,
	TI_STEP_WPN_ITEMREPLACED,
	TI_STEP_NONWPN_BODYGROUPS,
	TI_STEP_OTHER_OPTIONS,
	TI_STEP_CUSTOMIZATION,

	TI_STEP_FINISHED,
};

enum testitem_bodygroups_to_hide_t
{
	TI_HIDEBG_HAT,
	TI_HIDEBG_HEADPHONES,
	TI_HIDEBG_MEDALS,
	TI_HIDEBG_GRENADES,
	TI_HIDEBG_BULLETS,
	TI_HIDEBG_ARROWS,
	TI_HIDEBG_RIGHTARM,
	TI_HIDEBG_SHOES_SOCKS,

	TI_HIDEBG_COUNT,
};

//-----------------------------------------------------------------------------
// A dialog that handles adding or modifying an item we're testing
//-----------------------------------------------------------------------------
class CTestItemDialog : public vgui::EditablePanel, public CGameEventListener
{
	DECLARE_CLASS_SIMPLE( CTestItemDialog, vgui::EditablePanel );
public:
	CTestItemDialog( vgui::Panel *parent, testitem_itemtypes_t iItemType, int iClassUsage, KeyValues *pExistingKVs );
	~CTestItemDialog( void );

	virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
	virtual void PerformLayout( void );
	virtual void OnCommand( const char *command );
	virtual void FireGameEvent( IGameEvent *event );

	void	Close( void );
	void	CloseAndUpdateItem( void );

	MESSAGE_FUNC_PARAMS( OnTextChanged, "TextChanged", data );
	MESSAGE_FUNC_CHARPTR( OnFileSelected, "FileSelected", fullpath );

private:
	void	InitializeFromExistingKVs( KeyValues *pExistingKVs );
	void	SetEntryStep( testitem_entrysteps_t iStep );
	void	OpenSelectModelDialog( void );
	void	SetupItemComboBox( vgui::ComboBox *pComboBox );
	void	SetupPaintColorComboBox( void );
	void	SetupUnusualEffectComboBox( void );
	void	HandleClassCheckbuttonChecked( vgui::Panel *pPanel );

private:
	testitem_entrysteps_t	m_iEntryStep;
	testitem_itemtypes_t	m_iItemType;
	int						m_iClassUsage;

	vgui::FileOpenDialog	*m_hImportModelDialog;
	char					m_szRelativePath[MAX_PATH];

	CExLabel				*m_pModelLabel;
	CExLabel				*m_pSelectModelLabel;
	CExLabel				*m_pNoItemsToReplaceLabel;
	CExButton				*m_pSelectModelButton;
	CExButton				*m_pOkButton;
	vgui::ComboBox			*m_pItemReplacedComboBox;
	vgui::EditablePanel		*m_pBodygroupPanel;
	vgui::EditablePanel		*m_pItemReplacedPanel;
	vgui::CheckButton		*m_pBodygroupCheckButtons[TI_HIDEBG_COUNT];

	vgui::EditablePanel		*m_pCustomizationsPanel;
	vgui::ComboBox			*m_pPaintColorComboBox;
	vgui::ComboBox			*m_pUnusualEffectComboBox;

	vgui::EditablePanel		*m_pExistingItemToTestPanel;
	vgui::ComboBox			*m_pExistingItemComboBox;
};

#endif // TESTITEM_DIALOG_H