mirror of
https://github.com/celisej567/source-engine.git
synced 2026-09-27 16:15:14 +03:00
upload "kind" alien swarm
This commit is contained in:
199
game/client/swarm/vgui_rootpanel_asw.cpp
Normal file
199
game/client/swarm/vgui_rootpanel_asw.cpp
Normal file
@@ -0,0 +1,199 @@
|
||||
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
#include "cbase.h"
|
||||
#include "vgui_int.h"
|
||||
#include "ienginevgui.h"
|
||||
#include "vgui_controls/Panel.h"
|
||||
#include "vgui/IVgui.h"
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
using namespace vgui;
|
||||
|
||||
class CPanelEffect;
|
||||
|
||||
|
||||
// Serial under of effect, for safe lookup
|
||||
typedef unsigned int EFFECT_HANDLE;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Sits between engine and client .dll panels
|
||||
// Responsible for drawing screen overlays
|
||||
//-----------------------------------------------------------------------------
|
||||
class C_ASWRootPanel : public vgui::Panel
|
||||
{
|
||||
typedef vgui::Panel BaseClass;
|
||||
public:
|
||||
C_ASWRootPanel( vgui::VPANEL parent, int slot );
|
||||
virtual ~C_ASWRootPanel( void );
|
||||
|
||||
// Draw Panel effects here
|
||||
virtual void PostChildPaint();
|
||||
|
||||
// Clear list of Panel Effects
|
||||
virtual void LevelInit( void );
|
||||
virtual void LevelShutdown( void );
|
||||
|
||||
// Run effects and let them decide whether to remove themselves
|
||||
void OnTick( void );
|
||||
|
||||
virtual void PaintTraverse( bool Repaint, bool allowForce = true );
|
||||
|
||||
virtual void OnThink();
|
||||
private:
|
||||
|
||||
// Render all panel effects
|
||||
void RenderPanelEffects( void );
|
||||
|
||||
// List of current panel effects
|
||||
CUtlVector< CPanelEffect *> m_Effects;
|
||||
int m_nSplitSlot;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// C_SDKRootPanel implementation.
|
||||
//-----------------------------------------------------------------------------
|
||||
C_ASWRootPanel::C_ASWRootPanel( vgui::VPANEL parent, int slot )
|
||||
: BaseClass( NULL, "SDK Root Panel" ), m_nSplitSlot( slot )
|
||||
{
|
||||
SetParent( parent );
|
||||
SetPaintEnabled( false );
|
||||
SetPaintBorderEnabled( false );
|
||||
SetPaintBackgroundEnabled( false );
|
||||
|
||||
// This panel does post child painting
|
||||
SetPostChildPaintEnabled( true );
|
||||
|
||||
// Make it screen sized
|
||||
SetBounds( 0, 0, ScreenWidth(), ScreenHeight() );
|
||||
|
||||
// Ask for OnTick messages
|
||||
vgui::ivgui()->AddTickSignal( GetVPanel() );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
C_ASWRootPanel::~C_ASWRootPanel( void )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_ASWRootPanel::PostChildPaint()
|
||||
{
|
||||
BaseClass::PostChildPaint();
|
||||
|
||||
// Draw all panel effects
|
||||
RenderPanelEffects();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: For each panel effect, check if it wants to draw and draw it on
|
||||
// this panel/surface if so
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_ASWRootPanel::RenderPanelEffects( void )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_ASWRootPanel::OnTick( void )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Reset effects on level load/shutdown
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_ASWRootPanel::LevelInit( void )
|
||||
{
|
||||
}
|
||||
|
||||
void C_ASWRootPanel::LevelShutdown( void )
|
||||
{
|
||||
}
|
||||
|
||||
void C_ASWRootPanel::PaintTraverse( bool Repaint, bool allowForce /*= true*/ )
|
||||
{
|
||||
ACTIVE_SPLITSCREEN_PLAYER_GUARD( m_nSplitSlot);
|
||||
BaseClass::PaintTraverse( Repaint, allowForce );
|
||||
}
|
||||
|
||||
void C_ASWRootPanel::OnThink()
|
||||
{
|
||||
ACTIVE_SPLITSCREEN_PLAYER_GUARD( m_nSplitSlot );
|
||||
BaseClass::OnThink();
|
||||
}
|
||||
|
||||
static C_ASWRootPanel *g_pRootPanel[ MAX_SPLITSCREEN_PLAYERS ];
|
||||
static C_ASWRootPanel *g_pFullscreenRootPanel;
|
||||
|
||||
void VGui_GetPanelList( CUtlVector< Panel * > &list )
|
||||
{
|
||||
for ( int i = 0 ; i < MAX_SPLITSCREEN_PLAYERS; ++i )
|
||||
{
|
||||
list.AddToTail( g_pRootPanel[ i ] );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void VGUI_CreateClientDLLRootPanel( void )
|
||||
{
|
||||
for ( int i = 0 ; i < MAX_SPLITSCREEN_PLAYERS; ++i )
|
||||
{
|
||||
g_pRootPanel[ i ] = new C_ASWRootPanel( enginevgui->GetPanel( PANEL_CLIENTDLL ), i );
|
||||
}
|
||||
|
||||
g_pFullscreenRootPanel = new C_ASWRootPanel( enginevgui->GetPanel( PANEL_CLIENTDLL ), 0 );
|
||||
g_pFullscreenRootPanel->SetZPos( 1 );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void VGUI_DestroyClientDLLRootPanel( void )
|
||||
{
|
||||
for ( int i = 0 ; i < MAX_SPLITSCREEN_PLAYERS; ++i )
|
||||
{
|
||||
delete g_pRootPanel[ i ];
|
||||
g_pRootPanel[ i ] = NULL;
|
||||
}
|
||||
|
||||
delete g_pFullscreenRootPanel;
|
||||
g_pFullscreenRootPanel = NULL;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Game specific root panel
|
||||
// Output : vgui::Panel
|
||||
//-----------------------------------------------------------------------------
|
||||
vgui::VPANEL VGui_GetClientDLLRootPanel( void )
|
||||
{
|
||||
Assert( engine->IsLocalPlayerResolvable() );
|
||||
return g_pRootPanel[ engine->GetActiveSplitScreenPlayerSlot() ]->GetVPanel();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Fullscreen root panel for shared hud elements during splitscreen
|
||||
// Output : vgui::Panel
|
||||
//-----------------------------------------------------------------------------
|
||||
vgui::Panel *VGui_GetFullscreenRootPanel( void )
|
||||
{
|
||||
return g_pFullscreenRootPanel;
|
||||
}
|
||||
|
||||
vgui::VPANEL VGui_GetFullscreenRootVPANEL( void )
|
||||
{
|
||||
return g_pFullscreenRootPanel->GetVPanel();
|
||||
}
|
||||
Reference in New Issue
Block a user