This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
nekohook/modules/source2013/sdk/game/client/hud_basedeathnotice.h
2020-08-04 13:13:01 -04:00

157 lines
5.2 KiB
C++

//========= 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;
}
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;
};
#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) { return -1; }
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