summaryrefslogtreecommitdiff
path: root/gameui/OptionsDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gameui/OptionsDialog.cpp')
-rw-r--r--gameui/OptionsDialog.cpp155
1 files changed, 155 insertions, 0 deletions
diff --git a/gameui/OptionsDialog.cpp b/gameui/OptionsDialog.cpp
new file mode 100644
index 0000000..b1dedfe
--- /dev/null
+++ b/gameui/OptionsDialog.cpp
@@ -0,0 +1,155 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "BasePanel.h"
+#include "OptionsDialog.h"
+
+#include "vgui_controls/Button.h"
+#include "vgui_controls/CheckButton.h"
+#include "vgui_controls/PropertySheet.h"
+#include "vgui_controls/Label.h"
+#include "vgui_controls/QueryBox.h"
+
+#include "vgui/ILocalize.h"
+#include "vgui/ISurface.h"
+#include "vgui/ISystem.h"
+#include "vgui/IVGui.h"
+
+#include "KeyValues.h"
+#include "OptionsSubKeyboard.h"
+#include "OptionsSubMouse.h"
+#include "OptionsSubAudio.h"
+#include "OptionsSubVideo.h"
+#include "OptionsSubVoice.h"
+#include "OptionsSubMultiplayer.h"
+#include "OptionsSubDifficulty.h"
+#include "OptionsSubPortal.h"
+#ifdef WIN32
+// NVNT haptic configuration dialog
+#include "OptionsSubHaptics.h"
+#endif
+#include "ModInfo.h"
+
+using namespace vgui;
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include <tier0/memdbgon.h>
+
+//-----------------------------------------------------------------------------
+// Purpose: Basic help dialog
+//-----------------------------------------------------------------------------
+COptionsDialog::COptionsDialog(vgui::Panel *parent) : PropertyDialog(parent, "OptionsDialog")
+{
+ SetDeleteSelfOnClose(true);
+ SetBounds(0, 0, 512, 406);
+ SetSizeable( false );
+
+ SetTitle("#GameUI_Options", true);
+
+ // debug timing code, this function takes too long
+// double s4 = system()->GetCurrentTime();
+
+#if defined( WIN32 ) && !defined( _X360 )
+ // NVNT START see if the user has a haptic device via convar. if so create haptics dialog.
+ ConVarRef checkHap("hap_HasDevice");
+ checkHap.Init("hap_HasDevice",true);
+ if(checkHap.GetBool())
+ {
+ AddPage(new COptionsSubHaptics(this), "#GameUI_Haptics_TabTitle");
+ }
+ // NVNT END
+#endif
+ if (ModInfo().IsSinglePlayerOnly() && !ModInfo().NoDifficulty())
+ {
+ AddPage(new COptionsSubDifficulty(this), "#GameUI_Difficulty");
+ }
+
+ if (ModInfo().HasPortals())
+ {
+ AddPage(new COptionsSubPortal(this), "#GameUI_Portal");
+ }
+
+ AddPage(new COptionsSubKeyboard(this), "#GameUI_Keyboard");
+ AddPage(new COptionsSubMouse(this), "#GameUI_Mouse");
+
+ m_pOptionsSubAudio = new COptionsSubAudio(this);
+ AddPage(m_pOptionsSubAudio, "#GameUI_Audio");
+ m_pOptionsSubVideo = new COptionsSubVideo(this);
+ AddPage(m_pOptionsSubVideo, "#GameUI_Video");
+
+ if ( !ModInfo().IsSinglePlayerOnly() )
+ {
+ AddPage(new COptionsSubVoice(this), "#GameUI_Voice");
+ }
+
+ // add the multiplay page last, if we're combo single/multi or just multi
+ if ( (ModInfo().IsMultiplayerOnly() && !ModInfo().IsSinglePlayerOnly()) ||
+ (!ModInfo().IsMultiplayerOnly() && !ModInfo().IsSinglePlayerOnly()) )
+ {
+ m_pOptionsSubMultiplayer = new COptionsSubMultiplayer(this);
+ AddPage(m_pOptionsSubMultiplayer, "#GameUI_Multiplayer");
+ }
+
+// double s5 = system()->GetCurrentTime();
+// Msg("COptionsDialog::COptionsDialog(): %.3fms\n", (float)(s5 - s4) * 1000.0f);
+
+ SetApplyButtonVisible(true);
+ GetPropertySheet()->SetTabWidth(84);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Destructor
+//-----------------------------------------------------------------------------
+COptionsDialog::~COptionsDialog()
+{
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Brings the dialog to the fore
+//-----------------------------------------------------------------------------
+void COptionsDialog::Activate()
+{
+ BaseClass::Activate();
+ EnableApplyButton(false);
+}
+
+void COptionsDialog::OnKeyCodePressed( KeyCode code )
+{
+ switch ( GetBaseButtonCode( code ) )
+ {
+ case KEY_XBUTTON_B:
+ OnCommand( "Cancel" );
+ return;
+ }
+
+ BaseClass::OnKeyCodePressed( code );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Opens the dialog
+//-----------------------------------------------------------------------------
+void COptionsDialog::Run()
+{
+ SetTitle("#GameUI_Options", true);
+ Activate();
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Called when the GameUI is hidden
+//-----------------------------------------------------------------------------
+void COptionsDialog::OnGameUIHidden()
+{
+ // tell our children about it
+ for ( int i = 0 ; i < GetChildCount() ; i++ )
+ {
+ Panel *pChild = GetChild( i );
+ if ( pChild )
+ {
+ PostMessage( pChild, new KeyValues( "GameUIHidden" ) );
+ }
+ }
+}