diff options
Diffstat (limited to 'gameui/CommentaryDialog.cpp')
| -rw-r--r-- | gameui/CommentaryDialog.cpp | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/gameui/CommentaryDialog.cpp b/gameui/CommentaryDialog.cpp new file mode 100644 index 0000000..6f3479c --- /dev/null +++ b/gameui/CommentaryDialog.cpp @@ -0,0 +1,255 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= + +#include "CommentaryDialog.h" +#include "BasePanel.h" +#include "convar.h" +#include "EngineInterface.h" +#include "GameUI_Interface.h" +#include "vgui/ISurface.h" +#include "vgui/IInput.h" + +#include <stdio.h> + +using namespace vgui; + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +CCommentaryDialog::CCommentaryDialog(vgui::Panel *parent) : BaseClass(parent, "CommentaryDialog") +{ + SetDeleteSelfOnClose(true); + SetSizeable( false ); + + input()->SetAppModalSurface(GetVPanel()); + vgui::surface()->RestrictPaintToSinglePanel(GetVPanel()); + GameUI().PreventEngineHideGameUI(); + + SetTitle("#GameUI_CommentaryDialogTitle", true); + + LoadControlSettings("Resource/CommentaryDialog.res"); + + MoveToCenterOfScreen(); + + bool bCommentaryOn = false; + ConVarRef commentary( "commentary" ); + if ( commentary.IsValid() ) + { + bCommentaryOn = commentary.GetBool(); + } + + // Setup the buttons & labels to reflect the current state of the commentary + if ( bCommentaryOn ) + { + SetControlString( "ModeLabel", "#GAMEUI_Commentary_LabelOn" ); + SetControlString( "TurnOnButton", "#GAMEUI_Commentary_LeaveOn" ); + SetControlString( "TurnOffButton", "#GAMEUI_Commentary_TurnOff" ); + } + else + { + SetControlString( "ModeLabel", "#GAMEUI_Commentary_LabelOff" ); + SetControlString( "TurnOnButton", "#GAMEUI_Commentary_TurnOn" ); + SetControlString( "TurnOffButton", "#GAMEUI_Commentary_LeaveOff" ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +CCommentaryDialog::~CCommentaryDialog() +{ +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CCommentaryDialog::OnClose( void ) +{ + BaseClass::OnClose(); + + vgui::surface()->RestrictPaintToSinglePanel(NULL); + GameUI().AllowEngineHideGameUI(); + + // Bring up the post dialog + DHANDLE<CPostCommentaryDialog> hPostCommentaryDialog; + if ( !hPostCommentaryDialog.Get() ) + { + hPostCommentaryDialog = new CPostCommentaryDialog( BasePanel() ); + } + hPostCommentaryDialog->Activate(); +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *command - +//----------------------------------------------------------------------------- +void CCommentaryDialog::OnCommand( const char *command ) +{ + if ( !Q_stricmp( command, "TurnOn" ) ) + { + ConVarRef commentary("commentary"); + commentary.SetValue( 1 ); + Close(); + } + else if ( !Q_stricmp( command, "TurnOff" ) ) + { + ConVarRef commentary("commentary"); + commentary.SetValue( 0 ); + Close(); + } + else + { + BaseClass::OnCommand( command ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CCommentaryDialog::OnKeyCodePressed(KeyCode code) +{ + // Ignore escape key + if ( code == KEY_ESCAPE ) + return; + + if ( code == KEY_XBUTTON_A || code == STEAMCONTROLLER_A ) + { + OnCommand( "TurnOn" ); + return; + } + else if ( code == KEY_XBUTTON_B || code == STEAMCONTROLLER_B ) + { + OnCommand( "TurnOff" ); + return; + } + + BaseClass::OnKeyCodePressed(code); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void OpenCommentaryDialog( void ) +{ + DHANDLE<CCommentaryDialog> hCommentaryDialog; + if ( !hCommentaryDialog.Get() ) + { + hCommentaryDialog = new CCommentaryDialog( BasePanel() ); + } + + GameUI().ActivateGameUI(); + hCommentaryDialog->Activate(); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +ConVar commentary_firstrun("commentary_firstrun", "0", FCVAR_ARCHIVE ); +void CC_CommentaryTestFirstRun( void ) +{ + // The enable/disable commentary box in the sound options got lost in time; + // always prompt the user for commentary mode instead on new game. + //if ( !commentary_firstrun.GetBool() ) + { + commentary_firstrun.SetValue(1); + OpenCommentaryDialog(); + } +} +static ConCommand commentary_testfirstrun("commentary_testfirstrun", CC_CommentaryTestFirstRun, 0 ); + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +CPostCommentaryDialog::CPostCommentaryDialog(vgui::Panel *parent) : BaseClass(parent, "PostCommentaryDialog") +{ + SetDeleteSelfOnClose(true); + SetSizeable( false ); + + input()->SetAppModalSurface(GetVPanel()); + vgui::surface()->RestrictPaintToSinglePanel(GetVPanel()); + m_bResetPaintRestrict = false; + + SetTitle("#GameUI_CommentaryDialogTitle", true); + + LoadControlSettings("Resource/PostCommentaryDialog.res"); + + MoveToCenterOfScreen(); + + bool bCommentaryOn = false; + ConVarRef commentary("commentary"); + if ( commentary.IsValid() ) + { + bCommentaryOn = commentary.GetBool(); + } + + // Setup the buttons & labels to reflect the current state of the commentary + if ( bCommentaryOn ) + { + SetControlString( "PostModeLabel", "#GAMEUI_PostCommentary_ModeLabelOn" ); + } + else + { + SetControlString( "PostModeLabel", "#GAMEUI_PostCommentary_ModeLabelOff" ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +CPostCommentaryDialog::~CPostCommentaryDialog() +{ +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CPostCommentaryDialog::OnFinishedClose( void ) +{ + BaseClass::OnFinishedClose(); + + if ( !m_bResetPaintRestrict ) + { + m_bResetPaintRestrict = true; + vgui::surface()->RestrictPaintToSinglePanel(NULL); + GameUI().HideGameUI(); + } +} + +void CPostCommentaryDialog::OnKeyCodeTyped(KeyCode code) +{ + if ( code == KEY_ESCAPE ) + { + Close(); + vgui::surface()->RestrictPaintToSinglePanel(NULL); + m_bResetPaintRestrict = true; + } + else + { + BaseClass::OnKeyCodeTyped(code); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CPostCommentaryDialog::OnKeyCodePressed(KeyCode code) +{ + if ( code == KEY_XBUTTON_A || code == KEY_XBUTTON_B || code == STEAMCONTROLLER_B ) + { + Close(); + vgui::surface()->RestrictPaintToSinglePanel(NULL); + m_bResetPaintRestrict = true; + } + else + { + BaseClass::OnKeyCodePressed(code); + } +} |