You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
255 lines
6.9 KiB
255 lines
6.9 KiB
//========= 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); |
|
} |
|
}
|
|
|