summaryrefslogtreecommitdiff
path: root/game/client/dod/VGUI/dodviewport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/dod/VGUI/dodviewport.cpp')
-rw-r--r--game/client/dod/VGUI/dodviewport.cpp195
1 files changed, 195 insertions, 0 deletions
diff --git a/game/client/dod/VGUI/dodviewport.cpp b/game/client/dod/VGUI/dodviewport.cpp
new file mode 100644
index 0000000..4ce0a74
--- /dev/null
+++ b/game/client/dod/VGUI/dodviewport.cpp
@@ -0,0 +1,195 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Client DLL VGUI2 Viewport
+//
+// $Workfile: $
+// $Date: $
+//
+//-----------------------------------------------------------------------------
+// $Log: $
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "cbase.h"
+
+#pragma warning( disable : 4800 ) // disable forcing int to bool performance warning
+
+// VGUI panel includes
+#include <vgui_controls/Panel.h>
+#include <vgui/ISurface.h>
+#include <KeyValues.h>
+#include <vgui/Cursor.h>
+#include <vgui/IScheme.h>
+#include <vgui/IVGui.h>
+#include <vgui/ILocalize.h>
+#include <vgui/VGUI.h>
+
+// client dll/engine defines
+#include "hud.h"
+#include <voice_status.h>
+
+#include "dodteammenu.h"
+#include "dodclassmenu.h"
+#include "dodclientscoreboard.h"
+#include "dodspectatorgui.h"
+#include "dodtextwindow.h"
+#include "dodmenubackground.h"
+#include "dodoverview.h"
+
+#include "IGameUIFuncs.h"
+
+// viewport definitions
+#include <baseviewport.h>
+#include "dodviewport.h"
+#include "vguicenterprint.h"
+#include "text_message.h"
+#include "c_dod_player.h"
+
+
+CON_COMMAND_F( changeteam, "Choose a new team", FCVAR_SERVER_CAN_EXECUTE|FCVAR_CLIENTCMD_CAN_EXECUTE )
+{
+ C_DODPlayer *pPlayer = C_DODPlayer::GetLocalDODPlayer();
+
+ if ( pPlayer && pPlayer->CanShowTeamMenu() )
+ {
+ gViewPortInterface->ShowPanel( PANEL_TEAM, true );
+ }
+}
+
+CON_COMMAND_F( changeclass, "Choose a new class", FCVAR_SERVER_CAN_EXECUTE|FCVAR_CLIENTCMD_CAN_EXECUTE )
+{
+ C_DODPlayer *pPlayer = C_DODPlayer::GetLocalDODPlayer();
+
+ if ( pPlayer && pPlayer->CanShowClassMenu())
+ {
+ switch( pPlayer->GetTeamNumber() )
+ {
+ case TEAM_ALLIES:
+ gViewPortInterface->ShowPanel( PANEL_CLASS_ALLIES, true );
+ break;
+ case TEAM_AXIS:
+ gViewPortInterface->ShowPanel( PANEL_CLASS_AXIS, true );
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+CON_COMMAND_F( spec_menu, "Activates spectator menu", FCVAR_SERVER_CAN_EXECUTE|FCVAR_CLIENTCMD_CAN_EXECUTE)
+{
+ bool bShowIt = true;
+
+ if ( args.ArgC() == 2 )
+ {
+ bShowIt = atoi( args[ 1 ] ) == 1;
+ }
+
+ if ( gViewPortInterface )
+ {
+ gViewPortInterface->ShowPanel( PANEL_SPECMENU, bShowIt );
+ }
+}
+
+CON_COMMAND_F( togglescores, "Toggles score panel", FCVAR_SERVER_CAN_EXECUTE|FCVAR_CLIENTCMD_CAN_EXECUTE)
+{
+ if ( !gViewPortInterface )
+ return;
+
+ IViewPortPanel *scoreboard = gViewPortInterface->FindPanelByName( PANEL_SCOREBOARD );
+
+ if ( !scoreboard )
+ return;
+
+ if ( scoreboard->IsVisible() )
+ {
+ gViewPortInterface->ShowPanel( scoreboard, false );
+ GetClientVoiceMgr()->StopSquelchMode();
+ }
+ else
+ {
+ gViewPortInterface->ShowPanel( scoreboard, true );
+ }
+}
+
+
+void DODViewport::ApplySchemeSettings( vgui::IScheme *pScheme )
+{
+ BaseClass::ApplySchemeSettings( pScheme );
+
+ gHUD.InitColors( pScheme );
+
+ SetPaintBackgroundEnabled( false );
+}
+
+
+IViewPortPanel* DODViewport::CreatePanelByName(const char *szPanelName)
+{
+ IViewPortPanel* newpanel = NULL;
+
+ // overwrite MOD specific panel creation
+ if ( Q_strcmp(PANEL_TEAM, szPanelName) == 0 )
+ {
+ newpanel = new CDODTeamMenu( this );
+ }
+ else if ( Q_strcmp(PANEL_CLASS_ALLIES, szPanelName) == 0 )
+ {
+ newpanel = new CDODClassMenu_Allies( this );
+ }
+ else if ( Q_strcmp(PANEL_CLASS_AXIS, szPanelName) == 0 )
+ {
+ newpanel = new CDODClassMenu_Axis( this );
+ }
+ else if ( Q_strcmp(PANEL_SCOREBOARD, szPanelName) == 0)
+ {
+ newpanel = new CDODClientScoreBoardDialog( this );
+ }
+ else if ( Q_strcmp(PANEL_SPECGUI, szPanelName) == 0 )
+ {
+ newpanel = new CDODSpectatorGUI( this );
+ }
+ else if ( Q_strcmp(PANEL_INFO, szPanelName) == 0 )
+ {
+ newpanel = new CDODTextWindow( this );
+ }
+ else
+ {
+ // create a generic base panel, don't add twice
+ newpanel = BaseClass::CreatePanelByName( szPanelName );
+ }
+
+ return newpanel;
+}
+
+void DODViewport::CreateDefaultPanels( void )
+{
+ AddNewPanel( CreatePanelByName( PANEL_TEAM ), "PANEL_TEAM" );
+ AddNewPanel( CreatePanelByName( PANEL_CLASS_ALLIES ), "PANEL_CLASS_ALLIES" );
+ AddNewPanel( CreatePanelByName( PANEL_CLASS_AXIS ), "PANEL_CLASS_AXIS" );
+
+ BaseClass::CreateDefaultPanels();
+}
+
+int DODViewport::GetDeathMessageStartHeight( void )
+{
+ int y = YRES(5);
+
+ if ( g_pSpectatorGUI && g_pSpectatorGUI->IsVisible() )
+ {
+ y = g_pSpectatorGUI->GetTopBarHeight() + YRES(5);
+ }
+
+ if ( g_pMapOverview && g_pMapOverview->IsVisible() )
+ {
+ if ( g_pMapOverview->GetMode() == CMapOverview::MAP_MODE_INSET )
+ {
+ int map_x, map_y, map_w, map_h;
+ g_pMapOverview->GetBounds( map_x, map_y, map_w, map_h );
+
+ y = map_y + map_h + YRES(5);
+ }
+ }
+
+ return y;
+}