//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: Layered Map that contains a background and stateful locations. // Each location will support mouse over information // // $NoKeywords: $ //=============================================================================// #ifndef TF_LAYEREDMAPPANEL_H #define TF_LAYEREDMAPPANEL_H #ifdef _WIN32 #pragma once #endif #include #include #include #include #include "item_model_panel.h" class CTFLayeredMapPanel; class CTFLayeredMapItemPanel; //========================================================= class CLayeredMapToolTip : public vgui::BaseTooltip { DECLARE_CLASS_SIMPLE( CLayeredMapToolTip, vgui::BaseTooltip ); public: CLayeredMapToolTip(vgui::Panel *parent, const char *text = NULL); void SetText(const char *text) { return; } const char *GetText() { return NULL; } virtual void PerformLayout(); virtual void ShowTooltip( vgui::Panel *currentPanel ); virtual void HideTooltip(); void SetupPanels( CTFLayeredMapPanel *pParentPanel, vgui::EditablePanel *pControlledPanel ); private: void GetPosition( itempanel_tooltippos_t iTooltipPosition, CTFLayeredMapItemPanel *pMapItemPanel, int iItemX, int iItemY, int *iXPos, int *iYPos ); bool ValidatePosition( CTFLayeredMapItemPanel *pItemPanel, int iItemX, int iItemY, int *iXPos, int *iYPos ); vgui::DHANDLE m_hCurrentPanel; CTFLayeredMapPanel *m_pParentPanel; vgui::EditablePanel *m_pControlledPanel; }; //========================================================= class CTFLayeredMapItemPanel : public vgui::EditablePanel { DECLARE_CLASS_SIMPLE( CTFLayeredMapItemPanel, vgui::EditablePanel ); public: CTFLayeredMapItemPanel( Panel *parent, const char *pName ); virtual void ApplySettings( KeyValues *inResourceData ); virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); // Button virtual void OnCursorEntered(); virtual void OnCursorExited(); virtual void OnMousePressed(vgui::MouseCode code); // void SetCompletionState( bool bIsCompleted ); KeyValues * GetItemKvData () { return m_kvData; } private: vgui::ScalableImagePanel *m_pIsCompleted; vgui::ScalableImagePanel *m_pIsCompletedHighlight; vgui::ScalableImagePanel *m_pNotCompleted; vgui::ScalableImagePanel *m_pNotCompletedHighlight; bool m_bIsCompleted; bool m_bIsMouseOvered; KeyValues *m_kvData; }; //========================================================= class CTFLayeredMapPanel : public vgui::EditablePanel { DECLARE_CLASS_SIMPLE( CTFLayeredMapPanel, vgui::EditablePanel ); public: CTFLayeredMapPanel( Panel *parent, const char *pName ); virtual void ApplySettings( KeyValues *inResourceData ); virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); //CUtlVector m_pImages; private: EditablePanel *m_pToolTipPanel; CLayeredMapToolTip *m_pToolTip; KeyValues *m_pLayeredMapKv; CUtlVector m_MapItems; }; #endif // TF_LAYEREDIMAGEPANEL_H