//========= 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 #include #include #include #include #include #include #include // client dll/engine defines #include "hud.h" #include #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 #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; }