forked from nillerusr/source-engine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOptionsDialog.h
141 lines (103 loc) · 3.86 KB
/
OptionsDialog.h
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef OPTIONSDIALOG_H
#define OPTIONSDIALOG_H
#ifdef _WIN32
#pragma once
#endif
#include "vgui_controls/PropertyDialog.h"
#include "vgui_controls/KeyRepeat.h"
//-----------------------------------------------------------------------------
// Purpose: Holds all the game option pages
//-----------------------------------------------------------------------------
class COptionsDialog : public vgui::PropertyDialog
{
DECLARE_CLASS_SIMPLE( COptionsDialog, vgui::PropertyDialog );
public:
COptionsDialog(vgui::Panel *parent);
~COptionsDialog();
void Run();
virtual void Activate();
void OnKeyCodePressed( vgui::KeyCode code );
vgui::PropertyPage* GetOptionsSubMultiplayer( void ) { return m_pOptionsSubMultiplayer; }
MESSAGE_FUNC( OnGameUIHidden, "GameUIHidden" ); // called when the GameUI is hidden
private:
class COptionsSubAudio *m_pOptionsSubAudio;
class COptionsSubVideo *m_pOptionsSubVideo;
vgui::PropertyPage *m_pOptionsSubMultiplayer;
};
#define OPTIONS_MAX_NUM_ITEMS 15
struct OptionData_t;
//-----------------------------------------------------------------------------
// Purpose: Holds all the game option pages
//-----------------------------------------------------------------------------
class COptionsDialogXbox : public vgui::Frame
{
DECLARE_CLASS_SIMPLE( COptionsDialogXbox, vgui::Frame );
public:
COptionsDialogXbox( vgui::Panel *parent, bool bControllerOptions = false );
~COptionsDialogXbox();
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
virtual void ApplySettings( KeyValues *inResourceData );
virtual void OnClose();
virtual void OnKeyCodePressed( vgui::KeyCode code );
virtual void OnCommand(const char *command);
virtual void OnKeyCodeReleased( vgui::KeyCode code);
virtual void OnThink();
private:
void HandleInactiveKeyCodePressed( vgui::KeyCode code );
void HandleActiveKeyCodePressed( vgui::KeyCode code );
void HandleBindKeyCodePressed( vgui::KeyCode code );
int GetSelectionLabel( void ) { return m_iSelection - m_iScroll; }
void ActivateSelection( void );
void DeactivateSelection( void );
void ChangeSelection( int iChange );
void UpdateFooter( void );
void UpdateSelection( void );
void UpdateScroll( void );
void UncacheChoices( void );
void GetChoiceFromConvar( OptionData_t *pOption );
void ChangeValue( float fChange );
void UnbindOption( OptionData_t *pOption, int iLabel );
void UpdateValue( OptionData_t *pOption, int iLabel );
void UpdateBind( OptionData_t *pOption, int iLabel, ButtonCode_t codeIgnore = BUTTON_CODE_INVALID, ButtonCode_t codeAdd = BUTTON_CODE_INVALID );
void UpdateAllBinds( ButtonCode_t code );
void FillInDefaultBindings( void );
bool ShouldSkipOption( KeyValues *pKey );
void ReadOptionsFromFile( const char *pchFileName );
void SortOptions( void );
void InitializeSliderDefaults( void );
private:
bool m_bControllerOptions;
bool m_bOptionsChanged;
bool m_bOldForceEnglishAudio;
CFooterPanel *m_pFooter;
CUtlVector<OptionData_t*> *m_pOptions;
bool m_bSelectionActive;
OptionData_t *m_pSelectedOption;
int m_iSelection;
int m_iScroll;
int m_iSelectorYStart;
int m_iOptionSpacing;
int m_iNumItems;
int m_iXAxisState;
int m_iYAxisState;
float m_fNextChangeTime;
vgui::Panel *m_pOptionsSelectionLeft;
vgui::Panel *m_pOptionsSelectionLeft2;
vgui::Label *m_pOptionsUpArrow;
vgui::Label *m_pOptionsDownArrow;
vgui::Label *(m_pOptionLabels[ OPTIONS_MAX_NUM_ITEMS ]);
vgui::Label *(m_pValueLabels[ OPTIONS_MAX_NUM_ITEMS ]);
vgui::AnalogBar *(m_pValueBars[ OPTIONS_MAX_NUM_ITEMS ]);
vgui::HFont m_hLabelFont;
vgui::HFont m_hButtonFont;
Color m_SelectedColor;
vgui::CKeyRepeatHandler m_KeyRepeat;
int m_nButtonGap;
};
#endif // OPTIONSDIALOG_H