summaryrefslogtreecommitdiff
path: root/game/client/tf2/c_obj_tunnel.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/tf2/c_obj_tunnel.cpp
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/client/tf2/c_obj_tunnel.cpp')
-rw-r--r--game/client/tf2/c_obj_tunnel.cpp143
1 files changed, 143 insertions, 0 deletions
diff --git a/game/client/tf2/c_obj_tunnel.cpp b/game/client/tf2/c_obj_tunnel.cpp
new file mode 100644
index 0000000..7794571
--- /dev/null
+++ b/game/client/tf2/c_obj_tunnel.cpp
@@ -0,0 +1,143 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "cbase.h"
+#include "hud.h"
+#include "c_obj_mapdefined.h"
+#include "minimap_trace.h"
+#include <KeyValues.h>
+#include "VGuiMatSurface/IMatSystemSurface.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class C_ObjectTunnel : public C_ObjectMapDefined
+{
+ DECLARE_CLASS( C_ObjectTunnel, C_ObjectMapDefined );
+public:
+ DECLARE_PREDICTABLE();
+ DECLARE_CLIENTCLASS();
+
+ C_ObjectTunnel();
+
+private:
+ C_ObjectTunnel( const C_ObjectTunnel& src );
+};
+
+LINK_ENTITY_TO_CLASS( obj_tunnel, C_ObjectTunnel );
+BEGIN_PREDICTION_DATA( C_ObjectTunnel )
+END_PREDICTION_DATA();
+
+
+IMPLEMENT_CLIENTCLASS_DT(C_ObjectTunnel, DT_ObjectTunnel, CObjectTunnel)
+END_RECV_TABLE()
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+C_ObjectTunnel::C_ObjectTunnel()
+{
+ CONSTRUCT_MINIMAP_PANEL( "obj_tunnel", MINIMAP_OBJECTS );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class CMinimapObjectTunnelPanel : public CMinimapTraceTeamBitmapPanel
+{
+ DECLARE_CLASS( CMinimapObjectTunnelPanel, CMinimapTraceTeamBitmapPanel );
+
+public:
+ CMinimapObjectTunnelPanel( vgui::Panel *parent, const char *panelName )
+ : BaseClass( parent, "CMinimapObjectTunnelPanel" )
+ {
+ }
+
+ virtual bool Init( KeyValues* pKeyValues, MinimapInitData_t* pInitData );
+ virtual void Paint();
+
+private:
+ enum
+ {
+ STATE_ENABLED = 0,
+ STATE_DISABLED,
+
+ NUM_STATES
+ };
+
+ CTeamBitmapImage m_TeamImage[ NUM_STATES ];
+};
+
+//-----------------------------------------------------------------------------
+//
+// A standard minimap renderable that displays a bitmap that changes when team changes
+//
+//-----------------------------------------------------------------------------
+DECLARE_MINIMAP_FACTORY( CMinimapObjectTunnelPanel, "minimap_obj_tunnel_panel" );
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : pKeyValues -
+// pInitData -
+// Output : Returns true on success, false on failure.
+//-----------------------------------------------------------------------------
+bool CMinimapObjectTunnelPanel::Init( KeyValues* pKeyValues, MinimapInitData_t* pInitData )
+{
+ if (!BaseClass::Init(pKeyValues, pInitData))
+ return false;
+
+ // Load viewcone material
+ KeyValues *enabled = pKeyValues->FindKey( "EnabledImage" );
+ if ( enabled )
+ {
+ if ( !m_TeamImage[ STATE_ENABLED ].Init( this, enabled, pInitData->m_pEntity ) )
+ return false;
+ }
+
+ KeyValues *disabled = pKeyValues->FindKey( "DisabledImage" );
+ if ( disabled )
+ {
+ if ( !m_TeamImage[ STATE_DISABLED ].Init( this, disabled, pInitData->m_pEntity ) )
+ return false;
+ }
+
+ return true;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CMinimapObjectTunnelPanel::Paint()
+{
+ // Draw the view cone
+ C_BaseEntity *pEntity = GetEntity();
+ Assert( pEntity );
+
+ if ( gHUD.IsHidden( HIDEHUD_MISCSTATUS ) )
+ return;
+
+ if ( !pEntity->IsBaseObject() )
+ return;
+
+ C_BaseObject *obj = static_cast< C_BaseObject * >( pEntity );
+ Assert( obj );
+
+ bool enabled = !obj->IsDisabled();
+ int image = enabled ? STATE_ENABLED : STATE_DISABLED;
+
+ if (!m_bClipToMap)
+ {
+ g_pMatSystemSurface->DisableClipping( true );
+ }
+ m_TeamImage[ image ].SetAlpha( ComputePanelAlpha() );
+ m_TeamImage[ image ].Paint();
+ g_pMatSystemSurface->DisableClipping( false );
+} \ No newline at end of file