source-engine/game/client/history_resource.h

97 lines
2.7 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Item pickup history displayed onscreen when items are picked up.
//
// $NoKeywords: $
//=============================================================================//
#ifndef HISTORY_RESOURCE_H
#define HISTORY_RESOURCE_H
#pragma once
#include "hudelement.h"
#include "ehandle.h"
#include <vgui_controls/Panel.h>
enum
{
HISTSLOT_EMPTY,
HISTSLOT_AMMO,
HISTSLOT_WEAP,
HISTSLOT_ITEM,
HISTSLOT_AMMODENIED,
};
namespace vgui
{
class IScheme;
}
class C_BaseCombatWeapon;
//-----------------------------------------------------------------------------
// Purpose: Used to draw the history of ammo / weapon / item pickups by the player
//-----------------------------------------------------------------------------
class CHudHistoryResource : public CHudElement, public vgui::Panel
{
DECLARE_CLASS_SIMPLE( CHudHistoryResource, vgui::Panel );
private:
struct HIST_ITEM
{
HIST_ITEM()
{
// init this here, because the code that overwrites previous history items will use this
// to check to see if the item is empty
DisplayTime = 0.0f;
}
int type;
float DisplayTime; // the time at which this item should be removed from the history
int iCount;
int iId;
CHandle< C_BaseCombatWeapon > m_hWeapon;
CHudTexture *icon;
};
CUtlVector<HIST_ITEM> m_PickupHistory;
public:
CHudHistoryResource( const char *pElementName );
// CHudElement overrides
virtual void Init( void );
virtual void Reset( void );
virtual bool ShouldDraw( void );
virtual void Paint( void );
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
void AddToHistory( int iType, int iId, int iCount = 0 );
void AddToHistory( int iType, const char *szName, int iCount = 0 );
void AddToHistory( C_BaseCombatWeapon *weapon );
void MsgFunc_ItemPickup( bf_read &msg );
void MsgFunc_AmmoDenied( bf_read &msg );
void CheckClearHistory( void );
void SetHistoryGap( int iNewHistoryGap );
void AddIconToHistory( int iType, int iId, C_BaseCombatWeapon *weapon, int iCount, CHudTexture *icon );
private:
// these vars are for hl1-port compatibility
int m_iHistoryGap;
int m_iCurrentHistorySlot;
bool m_bDoNotDraw;
wchar_t m_wcsAmmoFullMsg[16];
bool m_bNeedsDraw;
CPanelAnimationVarAliasType( float, m_flHistoryGap, "history_gap", "42", "proportional_float" );
CPanelAnimationVarAliasType( float, m_flIconInset, "icon_inset", "28", "proportional_float" );
CPanelAnimationVarAliasType( float, m_flTextInset, "text_inset", "26", "proportional_float" );
CPanelAnimationVar( vgui::HFont, m_hNumberFont, "NumberFont", "HudNumbersSmall" );
CPanelAnimationVar( vgui::HFont, m_hTextFont, "TextFont", "Default" );
};
#endif // HISTORY_RESOURCE_H