diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/tf/tf_hud_item_progress_tracker.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/tf/tf_hud_item_progress_tracker.h')
| -rw-r--r-- | game/client/tf/tf_hud_item_progress_tracker.h | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/game/client/tf/tf_hud_item_progress_tracker.h b/game/client/tf/tf_hud_item_progress_tracker.h new file mode 100644 index 0000000..62c7db0 --- /dev/null +++ b/game/client/tf/tf_hud_item_progress_tracker.h @@ -0,0 +1,213 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//============================================================================= + +#ifndef TF_HUD_ITEM_PROGRESS_TRACKER_H +#define TF_HUD_ITEM_PROGRESS_TRACKER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "cbase.h" +#include "hud_baseachievement_tracker.h" +#include "iachievementmgr.h" +#include "achievementmgr.h" +#include "baseachievement.h" +#include "gcsdk/gcclient_sharedobjectcache.h" +#include "econ_item_inventory.h" + + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +using namespace vgui; +using namespace GCSDK; + + +class CItemAttributeProgressPanel : public vgui::EditablePanel +{ + DECLARE_CLASS_SIMPLE( CItemAttributeProgressPanel, vgui::EditablePanel ); +public: + CItemAttributeProgressPanel( vgui::Panel* pParent, const char *pElementName, const CQuestObjectiveDefinition *pObjectiveDef, const char* pszResFileName ); + virtual ~CItemAttributeProgressPanel() {} + + virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) OVERRIDE; + virtual void ApplySettings( KeyValues *inResourceData ) OVERRIDE; + + virtual void OnThink() OVERRIDE; + + void SetProgress( Color glowColor ); + int GetContentTall() const; + + void SetIsValid( bool bIsValid ); + bool IsAdvanced() const { return m_bAdvanced; } + + const uint32 m_nDefIndex; +private: + float m_flLastThink; + float m_flUpdateTime; + bool m_bAdvanced; + + Label *m_pAttribDesc; + Label *m_pAttribGlow; + Label *m_pAttribBlur; + + Color m_enabledTextColor; + Color m_disabledTextColor; + + CUtlString m_strNormalPointLocToken; + CUtlString m_strAdvancedLocToken; + + CUtlString m_strResFileName; +}; + +class CItemTrackerPanel : public vgui::EditablePanel, public CGameEventListener +{ + DECLARE_CLASS_SIMPLE( CItemTrackerPanel, vgui::EditablePanel ); +public: + + CItemTrackerPanel( vgui::Panel* pParent, const char *pElementName, const CEconItem* pItem, const char* pszItemTrackerResFile ); + virtual ~CItemTrackerPanel(); + + virtual void ApplySettings( KeyValues *inResourceData ) OVERRIDE; + virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) OVERRIDE; + virtual void PerformLayout() OVERRIDE; + virtual int GetContentTall() const; + + virtual void OnThink() OVERRIDE; + virtual void FireGameEvent( IGameEvent *event ) OVERRIDE; + + bool IsStandardCompleted() const; + bool IsEverythingCompleted() const; + bool IsDoneProgressing() const { return m_flStandardCurrentProgress == m_flStandardTargetProgress && m_flBonusCurrentProgress == m_flBonusTargetProgress; } + + void SetItem( const CEconItem* pItem ); + CItemAttributeProgressPanel* GetPanelForObjective( const CQuestObjectiveDefinition* pObjective ); + bool IsValidForLocalPlayer() const; + + const CUtlVector< CItemAttributeProgressPanel* >& GetAttributePanels() const { return m_vecAttribPanels; } + +protected: + + enum ESoundToPlay + { + SOUND_NONE = 0, + SOUND_STANDARD_OBJECTIVE_TICK, + SOUND_ADVANCED_OBJECTIVE_TICK, + SOUND_QUEST_STANDARD_COMPLETE, + SOUND_QUEST_ADVANCED_COMPLETE, + }; + + void CaptureProgress(); + void UpdateBars(); + + vgui::Label *m_pItemName; + + + CEconItemViewHandle m_pItem; + CUtlVector< CItemAttributeProgressPanel* > m_vecAttribPanels; + EditablePanel *m_pCompletedContainer; + Label *m_pCompletedDescGlow; + Label *m_pCompletedNameGlow; + + EditablePanel *m_pProgressBarBackground; + EditablePanel *m_pProgressBarStandard; + EditablePanel *m_pProgressBarBonus; + EditablePanel *m_pProgressBarStandardHighlight; + EditablePanel *m_pProgressBarBonusHighlight; + + float m_flStandardCurrentProgress; + float m_flStandardTargetProgress; + float m_flBonusCurrentProgress; + float m_flBonusTargetProgress; + float m_flUpdateTime; + float m_flLastThink; + + uint32 m_nMaxStandardPoints; + uint32 m_nMaxBonusPoints; + + ESoundToPlay m_eSoundToPlay; + static float m_sflEventRecievedTime; + + int m_nContentTall; + + CUtlString m_strStandardObjectiveTick; + CUtlString m_strStandardPointsComplete; + CUtlString m_strAdvancedObjectiveComplete; + CUtlString m_strAdvancedPointsComplete; + + CUtlString m_strItemAttributeResFile; + CUtlString m_strItemTrackerResFile; + + CUtlString m_strProgressBarStandardLocToken; + CUtlString m_strProgressBarAdvancedLocToken; + + CPanelAnimationVarAliasType( int, m_nAttribYStartOffset, "attrib_y_start_offset", "5", "proportional_int"); + CPanelAnimationVarAliasType( int, m_nAttribYStep, "attrib_y_step", "0", "proportional_int"); + CPanelAnimationVarAliasType( int, m_nAttribXOffset, "attrib_x_offset", "5", "proportional_int"); + CPanelAnimationVar( bool, m_bNoEffects, "no_effects", "0" ); + + CPanelAnimationVarAliasType( int, m_nBarGap, "bar_gap", "0", "proportional_int"); + + CPanelAnimationVar( Color, m_clrStandardHighlight, "standard_glow_color", "QuestStandardHighlight" ); + CPanelAnimationVar( Color, m_clrBonusHighlight, "bonus_glow_color", "QuestBonusHighlight" ); +}; + +class CHudItemAttributeTracker : public CHudElement, public EditablePanel, public ISharedObjectListener +{ + DECLARE_CLASS_SIMPLE( CHudItemAttributeTracker, EditablePanel ); +public: + enum ETrackerHandling_t + { + TRACKER_INVALID, + TRACKER_CREATE, + TRACKER_UPDATE, + TRACKER_REMOVE, + }; + + CHudItemAttributeTracker( const char *pElementName ); + virtual void ApplySchemeSettings( IScheme *pScheme ) OVERRIDE; + virtual void PerformLayout() OVERRIDE; + virtual void FireGameEvent( IGameEvent *pEvent ) OVERRIDE; + virtual bool ShouldDraw(); + virtual void OnThink() OVERRIDE; + + virtual void SOCreated( const CSteamID & steamIDOwner, const CSharedObject *pObject, ESOCacheEvent eEvent ) OVERRIDE + { + HandleSOEvent( steamIDOwner, pObject, TRACKER_CREATE ); + } + virtual void PreSOUpdate( const CSteamID & steamIDOwner, ESOCacheEvent eEvent ) OVERRIDE {}; + virtual void SOUpdated( const CSteamID & steamIDOwner, const CSharedObject *pObject, ESOCacheEvent eEvent ) OVERRIDE + { + HandleSOEvent( steamIDOwner, pObject, TRACKER_UPDATE ); + } + virtual void PostSOUpdate( const CSteamID & steamIDOwner, ESOCacheEvent eEvent ) OVERRIDE {}; + virtual void SODestroyed( const CSteamID & steamIDOwner, const CSharedObject *pObject, ESOCacheEvent eEvent ) OVERRIDE + { + HandleSOEvent( steamIDOwner, pObject, TRACKER_REMOVE ); + } + virtual void SOCacheSubscribed( const CSteamID & steamIDOwner, ESOCacheEvent eEvent ) OVERRIDE {}; + virtual void SOCacheUnsubscribed( const CSteamID & steamIDOwner, ESOCacheEvent eEvent ) OVERRIDE {}; + + virtual void LevelInit( void ) OVERRIDE; + virtual void LevelShutdown( void ) OVERRIDE; + +private: + + void HandleSOEvent( const CSteamID & steamIDOwner, const CSharedObject *pObject, ETrackerHandling_t eHandling ); + bool FindTrackerForItem( const CEconItem* pItem, CItemTrackerPanel** ppTracker, bool bCreateIfNotFound ); + + CUtlMap< itemid_t, CItemTrackerPanel* > m_mapTrackers; + EditablePanel *m_pStatusContainer; + Label *m_pCallToActionLabel; + Label *m_pStatusHeaderLabel; + CPanelAnimationVarAliasType( int, m_nStatusBufferWidth, "stats_buffer_width", "0", "proportional_int"); + +}; + +int QuestSort_PointsAscending( CItemAttributeProgressPanel* const* p1, CItemAttributeProgressPanel* const* p2 ); + +#endif // TF_HUD_ITEM_PROGRESS_TRACKER_H
\ No newline at end of file |