summaryrefslogtreecommitdiff
path: root/game/client/tf2/playeroverlaysquad.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/tf2/playeroverlaysquad.cpp')
-rw-r--r--game/client/tf2/playeroverlaysquad.cpp187
1 files changed, 187 insertions, 0 deletions
diff --git a/game/client/tf2/playeroverlaysquad.cpp b/game/client/tf2/playeroverlaysquad.cpp
new file mode 100644
index 0000000..f646706
--- /dev/null
+++ b/game/client/tf2/playeroverlaysquad.cpp
@@ -0,0 +1,187 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $Workfile: $
+// $NoKeywords: $
+//=============================================================================//
+#include "cbase.h"
+#include <KeyValues.h>
+#include "playeroverlay.h"
+#include "playeroverlaysquad.h"
+#include <KeyValues.h>
+#include "panelmetaclassmgr.h"
+#include "hud_commander_statuspanel.h"
+#include <vgui/IScheme.h>
+#include <vgui/IVGui.h>
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : *name -
+//-----------------------------------------------------------------------------
+CHudPlayerOverlaySquad::CHudPlayerOverlaySquad( CHudPlayerOverlay *baseOverlay, const char *squadname ) :
+vgui::Label( (vgui::Panel *)NULL, "OverlaySquad", squadname )
+{
+ m_pBaseOverlay = baseOverlay;
+
+ Q_strncpy( m_szSquad, squadname, sizeof( m_szSquad ) );
+
+ SetPaintBackgroundEnabled( false );
+
+ // Send mouse inputs (but not cursorenter/exit for now) up to parent
+ SetReflectMouse( true );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+CHudPlayerOverlaySquad::~CHudPlayerOverlaySquad( void )
+{
+}
+
+
+//-----------------------------------------------------------------------------
+// Initialization
+//-----------------------------------------------------------------------------
+bool CHudPlayerOverlaySquad::Init( KeyValues* pInitData )
+{
+ if (!pInitData)
+ return false;
+
+ SetContentAlignment( vgui::Label::a_west );
+
+ if (!ParseRGBA(pInitData, "fgcolor", m_fgColor ))
+ return false;
+
+ if (!ParseRGBA(pInitData, "bgcolor", m_bgColor))
+ return false;
+
+ int x, y, w, h;
+ if (!ParseRect(pInitData, "position", x, y, w, h ))
+ return false;
+ SetPos( x, y );
+ SetSize( w, h );
+
+ return true;
+}
+
+void CHudPlayerOverlaySquad::ApplySchemeSettings( vgui::IScheme *pScheme )
+{
+ BaseClass::ApplySchemeSettings( pScheme );
+ SetFont( pScheme->GetFont( "primary" ) );
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : *name -
+//-----------------------------------------------------------------------------
+void CHudPlayerOverlaySquad::SetSquad( const char *squadname )
+{
+ Q_strncpy( m_szSquad, squadname, sizeof( m_szSquad ) );
+ SetText( squadname );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CHudPlayerOverlaySquad::Paint()
+{
+ m_pBaseOverlay->SetColorLevel( this, m_fgColor, m_bgColor );
+
+ BaseClass::Paint();
+}
+
+void CHudPlayerOverlaySquad::SetReflectMouse( bool reflect )
+{
+ m_bReflectMouse = true;
+}
+
+void CHudPlayerOverlaySquad::OnCursorMoved(int x,int y)
+{
+ if ( !m_bReflectMouse )
+ return;
+
+ if ( !GetParent() )
+ return;
+
+ LocalToScreen( x, y );
+
+ vgui::ivgui()->PostMessage(
+ GetParent()->GetVPanel(),
+ new KeyValues( "CursorMoved", "xpos", x, "ypos", y ),
+ GetVPanel() );
+}
+
+void CHudPlayerOverlaySquad::OnMousePressed(vgui::MouseCode code)
+{
+ if ( !m_bReflectMouse )
+ return;
+
+ if ( !GetParent() )
+ return;
+
+ vgui::ivgui()->PostMessage(
+ GetParent()->GetVPanel(),
+ new KeyValues( "MousePressed", "code", code ),
+ GetVPanel() );
+}
+
+void CHudPlayerOverlaySquad::OnMouseDoublePressed(vgui::MouseCode code)
+{
+ if ( !m_bReflectMouse )
+ return;
+
+ if ( !GetParent() )
+ return;
+
+ vgui::ivgui()->PostMessage(
+ GetParent()->GetVPanel(),
+ new KeyValues( "MouseDoublePressed", "code", code ),
+ GetVPanel() );
+}
+
+void CHudPlayerOverlaySquad::OnMouseReleased(vgui::MouseCode code)
+{
+ if ( !m_bReflectMouse )
+ return;
+
+ if ( !GetParent() )
+ return;
+
+ vgui::ivgui()->PostMessage(
+ GetParent()->GetVPanel(),
+ new KeyValues( "MouseReleased", "code", code ),
+ GetVPanel() );
+}
+
+void CHudPlayerOverlaySquad::OnMouseWheeled(int delta)
+{
+ if ( !m_bReflectMouse )
+ return;
+
+ if ( !GetParent() )
+ return;
+
+ vgui::ivgui()->PostMessage(
+ GetParent()->GetVPanel(),
+ new KeyValues( "MouseWheeled", "delta", delta ),
+ GetVPanel() );
+}
+
+
+void CHudPlayerOverlaySquad::OnCursorEntered()
+{
+ if ( m_pBaseOverlay->GetMouseOverText() )
+ {
+ StatusPrint( TYPE_HINT, "%s", m_pBaseOverlay->GetMouseOverText() );
+ }
+}
+
+void CHudPlayerOverlaySquad::OnCursorExited()
+{
+ if ( m_pBaseOverlay->GetMouseOverText() )
+ {
+ StatusClear();
+ }
+} \ No newline at end of file