diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/dod/VGUI/dodviewport.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/dod/VGUI/dodviewport.cpp')
| -rw-r--r-- | game/client/dod/VGUI/dodviewport.cpp | 195 |
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; +} |