You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
4.5 KiB
146 lines
4.5 KiB
![]()
4 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
|
||
|
#ifndef HUD_BASEDEATHNOTICE_H
|
||
|
#define HUD_BASEDEATHNOTICE_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
// Player entries in a death notice
|
||
|
struct DeathNoticePlayer
|
||
|
{
|
||
|
DeathNoticePlayer()
|
||
|
{
|
||
|
szName[0] = 0;
|
||
|
iTeam = TEAM_UNASSIGNED;
|
||
|
}
|
||
|
char szName[MAX_PLAYER_NAME_LENGTH*2]; // big enough for player name and additional information
|
||
|
int iTeam; // team #
|
||
|
};
|
||
|
|
||
|
// Contents of each entry in our list of death notices
|
||
|
struct DeathNoticeItem
|
||
|
{
|
||
|
DeathNoticeItem()
|
||
|
{
|
||
|
szIcon[0]=0;
|
||
|
wzInfoText[0]=0;
|
||
|
wzInfoTextEnd[0]=0;
|
||
|
iconDeath = NULL;
|
||
|
iconCritDeath = NULL;
|
||
|
bSelfInflicted = false;
|
||
|
bLocalPlayerInvolved = false;
|
||
|
bCrit = false;
|
||
|
flCreationTime = 0;
|
||
|
iCount = 0;
|
||
|
iWeaponID = -1;
|
||
|
iKillerID = -1;
|
||
|
iVictimID = -1;
|
||
|
|
||
|
iconPreKillerName = NULL;
|
||
|
iconPostKillerName = NULL;
|
||
|
wzPreKillerText[0] = 0;
|
||
|
iconPostVictimName = NULL;
|
||
|
|
||
|
bSpecialScore = false;
|
||
|
}
|
||
|
|
||
|
float GetExpiryTime();
|
||
|
|
||
|
DeathNoticePlayer Killer;
|
||
|
DeathNoticePlayer Victim;
|
||
|
char szIcon[32]; // name of icon to display
|
||
|
wchar_t wzInfoText[32]; // any additional text to display next to icon
|
||
|
wchar_t wzInfoTextEnd[32]; // any additional text to display next to victim name
|
||
|
CHudTexture *iconDeath;
|
||
|
CHudTexture *iconCritDeath; // crit background icon
|
||
|
|
||
|
CHudTexture *iconPreKillerName;
|
||
|
|
||
|
CHudTexture *iconPostKillerName;
|
||
|
wchar_t wzPreKillerText[32];
|
||
|
|
||
|
CHudTexture *iconPostVictimName;
|
||
|
|
||
|
bool bSelfInflicted;
|
||
|
bool bLocalPlayerInvolved;
|
||
|
bool bCrit;
|
||
|
float flCreationTime;
|
||
|
int iWeaponID;
|
||
|
int iKillerID;
|
||
|
int iVictimID;
|
||
|
int iCount;
|
||
|
|
||
|
bool bSpecialScore;
|
||
|
};
|
||
|
|
||
|
#define NUM_CORNER_COORD 10
|
||
|
#define NUM_BACKGROUND_COORD NUM_CORNER_COORD*4
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CHudBaseDeathNotice : public CHudElement, public vgui::Panel
|
||
|
{
|
||
|
DECLARE_CLASS_SIMPLE( CHudBaseDeathNotice, vgui::Panel );
|
||
|
public:
|
||
|
CHudBaseDeathNotice( const char *pElementName );
|
||
|
|
||
|
void VidInit( void );
|
||
|
virtual void Init( void );
|
||
|
virtual bool ShouldDraw( void );
|
||
|
virtual void Paint( void );
|
||
|
virtual void ApplySchemeSettings( vgui::IScheme *scheme );
|
||
|
|
||
|
void RetireExpiredDeathNotices( void );
|
||
|
|
||
|
virtual void FireGameEvent( IGameEvent *event );
|
||
|
virtual bool ShouldShowDeathNotice( IGameEvent *event ){ return true; }
|
||
|
|
||
|
protected:
|
||
|
virtual Color GetTeamColor( int iTeamNumber, bool bLocalPlayerInvolved = false );
|
||
|
virtual void OnGameEvent( IGameEvent *event, int iDeathNoticeMsg ) {};
|
||
|
void DrawText( int x, int y, vgui::HFont hFont, Color clr, const wchar_t *szText );
|
||
|
int AddDeathNoticeItem();
|
||
|
void GetBackgroundPolygonVerts( int x0, int y0, int x1, int y1, int iVerts, vgui::Vertex_t vert[] );
|
||
|
void CalcRoundedCorners();
|
||
|
|
||
|
enum EDeathNoticeIconFormat
|
||
|
{
|
||
|
kDeathNoticeIcon_Standard,
|
||
|
kDeathNoticeIcon_Inverted, // used for display on lighter background when kill involved the local player
|
||
|
};
|
||
|
|
||
|
CHudTexture *GetIcon( const char *szIcon, EDeathNoticeIconFormat eIconFormat );
|
||
|
|
||
|
virtual bool EventIsPlayerDeath( const char *eventName );
|
||
|
|
||
|
virtual int UseExistingNotice( IGameEvent *event );
|
||
|
|
||
|
void GetLocalizedControlPointName( IGameEvent *event, char *namebuf, int namelen );
|
||
|
virtual Color GetInfoTextColor( int iDeathNoticeMsg ){ return Color( 255, 255, 255, 255 ); }
|
||
|
virtual Color GetBackgroundColor ( int iDeathNoticeMsg ) { return m_DeathNotices[iDeathNoticeMsg].bLocalPlayerInvolved ? m_clrLocalBGColor : m_clrBaseBGColor; }
|
||
|
|
||
|
CPanelAnimationVarAliasType( float, m_flLineHeight, "LineHeight", "16", "proportional_float" );
|
||
|
CPanelAnimationVarAliasType( float, m_flLineSpacing, "LineSpacing", "4", "proportional_float" );
|
||
|
CPanelAnimationVarAliasType( float, m_flCornerRadius, "CornerRadius", "3", "proportional_float" );
|
||
|
CPanelAnimationVar( float, m_flMaxDeathNotices, "MaxDeathNotices", "4" );
|
||
|
CPanelAnimationVar( bool, m_bRightJustify, "RightJustify", "1" );
|
||
|
CPanelAnimationVar( vgui::HFont, m_hTextFont, "TextFont", "Default" );
|
||
|
CPanelAnimationVar( Color, m_clrIcon, "IconColor", "255 80 0 255" );
|
||
|
CPanelAnimationVar( Color, m_clrBaseBGColor, "BaseBackgroundColor", "46 43 42 220" );
|
||
|
CPanelAnimationVar( Color, m_clrLocalBGColor, "LocalBackgroundColor", "245 229 196 200" );
|
||
|
CPanelAnimationVar( Color, m_clrKillStreakBg, "KillStreakBackgroundColor", "224 223 219 200" );
|
||
|
|
||
|
CUtlVector<DeathNoticeItem> m_DeathNotices;
|
||
|
|
||
|
Vector2D m_CornerCoord[NUM_CORNER_COORD];
|
||
|
};
|
||
|
|
||
|
#endif // HUD_BASEDEATHNOTICE_H
|