#ifndef _INCLUDED_ASW_HUD_OBJECTIVE_H #define _INCLUDED_ASW_HUD_OBJECTIVE_H #ifdef _WIN32 #pragma once #endif #include "asw_hudelement.h" #include #include "asw_shareddefs.h" namespace vgui { class IScheme; class ImagePanel; class Label; }; class C_ASW_Objective; extern ConVar asw_draw_hud; // shows the summary of the objectives in the top left of the screen during the mission class CASWHudObjective : public CASW_HudElement, public vgui::Panel { DECLARE_CLASS_SIMPLE( CASWHudObjective, vgui::Panel ); public: CASWHudObjective( const char *pElementName ); virtual void OnThink(); virtual void OnTick(); virtual void Init(); virtual void PerformLayout(); virtual void LevelShutdown(); virtual bool ShouldDraw( void ) { return asw_draw_hud.GetBool() && CASW_HudElement::ShouldDraw(); } void ShowObjectives( float fDuration ); void LayoutObjectives(); void UpdateObjectiveList(); void SetDefaultHUDFonts(); vgui::HFont m_hDefaultFont; vgui::HFont m_hDefaultGlowFont; vgui::HFont m_hSmallFont; vgui::HFont m_hSmallGlowFont; int m_iLastHeight; bool IsSpectating(); C_ASW_Objective* GetObjective( int i ); protected: virtual void ApplySchemeSettings( vgui::IScheme *scheme ); virtual void Paint(); int m_iNumLetters, m_iLastNumLetters; float m_fNextLetterTime; bool m_bPlayMissionCompleteSequence; int m_iObjectiveCompleteSequencePos; int m_iNumObjectivesListed; bool m_bShowObjectives; vgui::Label* m_pCompleteLabel; vgui::Label* m_pCompleteLabelBD; CPanelAnimationVar( vgui::HFont, m_font, "ObjectiveFont", "Default" ); CPanelAnimationVar( vgui::HFont, m_hGlowFont, "ObjectiveGlowFont", "DefaultBlur" ); vgui::Label* m_pHeaderLabel; vgui::Label* m_pHeaderGlowLabel; vgui::Label* m_pObjectiveGlowLabel; // show a list of objectives CHandle m_hObjectives[ASW_MAX_OBJECTIVES]; CHandle m_hObjectiveComplete; // the objective we're currently highlighting as complete vgui::ImagePanel* m_pTickBox[ASW_MAX_OBJECTIVES]; vgui::ImagePanel* m_pObjectiveIcon[ASW_MAX_OBJECTIVES]; vgui::Label* m_pObjectiveLabel[ASW_MAX_OBJECTIVES]; bool m_bObjectiveComplete[ASW_MAX_OBJECTIVES]; bool m_bObjectiveTitleEmpty[ASW_MAX_OBJECTIVES]; float m_flCurrentAlpha; float m_fLastVisibleTime; float m_flShowObjectivesTime; bool m_bLastSpectating; CPanelAnimationVarAliasType( int, m_nBlackBarTexture, "BlackBarTexture", "vgui/swarm/HUD/ASWHUDBlackBar", "textureid" ); }; // standard font sizes used by other HUD elements vgui::HFont ASW_GetDefaultFont(bool bGlow=false); vgui::HFont ASW_GetSmallFont(bool bGlow=false); #endif // _INCLUDED_ASW_HUD_OBJECTIVE_H