//========= Copyright © 1996-2005, 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 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 m_PickupHistory; public: explicit 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 ); bool MsgFunc_ItemPickup( const CCSUsrMsg_ItemPickup &msg ); bool MsgFunc_AmmoDenied( const CCSUsrMsg_AmmoDenied &msg ); CUserMessageBinder m_UMCMsgItemPickup; CUserMessageBinder m_UMCMsgAmmoDenied; 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