summaryrefslogtreecommitdiff
path: root/gameui/OptionsDialog.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /gameui/OptionsDialog.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'gameui/OptionsDialog.h')
-rw-r--r--gameui/OptionsDialog.h141
1 files changed, 141 insertions, 0 deletions
diff --git a/gameui/OptionsDialog.h b/gameui/OptionsDialog.h
new file mode 100644
index 0000000..c21baa9
--- /dev/null
+++ b/gameui/OptionsDialog.h
@@ -0,0 +1,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