Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= 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 <vgui/IScheme.h>
#include <vgui_controls/EditablePanel.h>
#include <vgui_controls/ScalableImagePanel.h>
#include <vgui_controls/Tooltip.h>
#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<CTFLayeredMapItemPanel> 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<vgui::ImagePanel*> m_pImages;
private:
EditablePanel *m_pToolTipPanel; CLayeredMapToolTip *m_pToolTip;
KeyValues *m_pLayeredMapKv;
CUtlVector<CTFLayeredMapItemPanel*> m_MapItems; };
#endif // TF_LAYEREDIMAGEPANEL_H
|