mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-18 22:41:58 +00:00
1
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef MINIMAP_ENTITY_H
|
||||
#define MINIMAP_ENTITY_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
|
||||
#include "hud_minimap.h"
|
||||
#include "TeamBitmapImage.h"
|
||||
#include "vgui_bitmapimage.h"
|
||||
#include <vgui_controls/Panel.h>
|
||||
|
||||
|
||||
// FIXME: Need to put the team color somewhere...
|
||||
// Get the team color...
|
||||
extern int g_TeamColor[3][3];
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// A base minimap panel meant to be attached to an entity.
|
||||
// NOTE: paint() will never be called unless the entity is currently valid
|
||||
//-----------------------------------------------------------------------------
|
||||
class C_BaseEntity;
|
||||
|
||||
class CMinimapTracePanel : public vgui::Panel
|
||||
{
|
||||
DECLARE_CLASS_GAMEROOT( CMinimapTracePanel, vgui::Panel );
|
||||
|
||||
public:
|
||||
CMinimapTracePanel( vgui::Panel *parent, const char *panelName );
|
||||
virtual ~CMinimapTracePanel();
|
||||
|
||||
bool Init( KeyValues* pKeyValues, MinimapInitData_t* pMinimapData );
|
||||
|
||||
// Causes the minimap panel to not be visible
|
||||
void SetTraceVisibility( bool bVisible );
|
||||
|
||||
// called when we're ticked...
|
||||
virtual void OnTick( void );
|
||||
|
||||
protected:
|
||||
// Can be overridden; it's called once a frame and returns true if the
|
||||
// object is visible to the minimap or not. X and Y are the position of the
|
||||
// entity in minimap space
|
||||
virtual bool ComputeVisibility( );
|
||||
|
||||
// Computes a panel alpha based on zoom level...
|
||||
float ComputePanelAlpha();
|
||||
|
||||
// Called by derived classes before drawing to determine if the entity is visible.
|
||||
// Also sets the vgui surface color based on the team.
|
||||
bool BeginRender( CMinimapPanel* pPanel, float &x, float &y, int &team ) { return false; }
|
||||
|
||||
// Computes the entity position in minimap panel coordinates
|
||||
bool GetEntityPosition( float &x, float &y );
|
||||
|
||||
// Sets the position of the trace in world space
|
||||
void SetPosition( const Vector &vecPosition );
|
||||
|
||||
// Entity accessors
|
||||
C_BaseEntity* GetEntity();
|
||||
void SetEntity( C_BaseEntity* pEntity );
|
||||
|
||||
protected:
|
||||
// Bitmap positional offset
|
||||
int m_OffsetX;
|
||||
int m_OffsetY;
|
||||
|
||||
int m_SizeW;
|
||||
int m_SizeH;
|
||||
|
||||
// Indicates we should clip to the map
|
||||
bool m_bClipToMap;
|
||||
|
||||
bool m_bCanScale;
|
||||
|
||||
private:
|
||||
// Indicates if we're faded out when zoomed in
|
||||
bool m_bVisibleWhenZoomedIn;
|
||||
|
||||
// Indicates we should always draw, even if we're off the map
|
||||
bool m_bClampToMap;
|
||||
|
||||
// Are we invisible because the entity wants us invisible?
|
||||
bool m_bVisible;
|
||||
|
||||
// This is the entity to which we're attached
|
||||
C_BaseEntity *m_pEntity;
|
||||
|
||||
// This is the location of the panel in world space
|
||||
Vector m_vecPosition;
|
||||
|
||||
// lifetime of the minimap panel
|
||||
float m_flDeletionTime;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// A standard minimap panel that displays a bitmap
|
||||
//-----------------------------------------------------------------------------
|
||||
class CMinimapTraceBitmapPanel : public CMinimapTracePanel
|
||||
{
|
||||
DECLARE_CLASS( CMinimapTraceBitmapPanel, CMinimapTracePanel );
|
||||
|
||||
public:
|
||||
CMinimapTraceBitmapPanel( vgui::Panel *parent, const char *panelName )
|
||||
: BaseClass ( parent, panelName )
|
||||
{
|
||||
}
|
||||
|
||||
// Sets the bitmap and size
|
||||
virtual bool Init( KeyValues* pKeyValues, MinimapInitData_t* pInitData );
|
||||
|
||||
// Performs the rendering...
|
||||
virtual void Paint();
|
||||
|
||||
protected:
|
||||
BitmapImage m_Image;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// A standard minimap panel that displays a bitmap based on entity team
|
||||
//-----------------------------------------------------------------------------
|
||||
class CMinimapTraceTeamBitmapPanel : public CMinimapTracePanel
|
||||
{
|
||||
DECLARE_CLASS( CMinimapTraceTeamBitmapPanel, CMinimapTracePanel );
|
||||
|
||||
public:
|
||||
CMinimapTraceTeamBitmapPanel( vgui::Panel *parent, const char *panelName )
|
||||
: BaseClass ( parent, panelName )
|
||||
{
|
||||
}
|
||||
|
||||
// Sets the bitmap and size
|
||||
virtual bool Init( KeyValues* pKeyValues, MinimapInitData_t* pInitData );
|
||||
|
||||
// Performs the rendering...
|
||||
virtual void Paint();
|
||||
|
||||
protected:
|
||||
CTeamBitmapImage m_TeamImage;
|
||||
};
|
||||
|
||||
|
||||
#endif // MINIMAP_ENTITY_H
|
||||
Reference in New Issue
Block a user