source-engine/engine/cl_demouipanel.h
FluorescentCIAAfricanAmerican 3bf9df6b27 1
2020-04-22 12:56:21 -04:00

188 lines
4.5 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef CL_DEMOUIPANEL_H
#define CL_DEMOUIPANEL_H
#ifdef _WIN32
#pragma once
#endif
#include <vgui_controls/Frame.h>
namespace vgui
{
class Button;
class CheckButton;
class Label;
class ProgressBar;
class FileOpenDialog;
class Slider;
};
class CDemoEditorPanel;
class CDemoSmootherPanel;
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
class CDemoUIPanel : public vgui::Frame
{
DECLARE_CLASS_SIMPLE( CDemoUIPanel, vgui::Frame );
public:
CDemoUIPanel( vgui::Panel *parent );
~CDemoUIPanel();
virtual void OnTick();
// Command issued
virtual void OnCommand(const char *command);
virtual void OnMessage(const KeyValues *params, vgui::VPANEL fromPanel);
virtual void OnVDMChanged( void );
virtual bool OverrideView( democmdinfo_t& info, int frame );
virtual void DrawDebuggingInfo();
static void InstallDemoUI( vgui::Panel *parent );
bool IsInDriveMode();
void SetDriveViewPoint( Vector &origin, QAngle &angle );
void GetDriveViewPoint( Vector &origin, QAngle &angle );
protected:
void HandleInput( bool active );
bool IsHoldingFastForward();
void SetPlaybackScale( float scale );
float GetPlaybackScale();
void GetCurrentView();
MESSAGE_FUNC_CHARPTR( OnFileSelected, "FileSelected", fullpath );
void OnEdit();
void OnSmooth();
void OnLoad();
vgui::Label *m_pCurrentDemo;
vgui::Button *m_pStop;
vgui::Button *m_pLoad;
// special editor buttons
vgui::Button *m_pEdit;
vgui::Button *m_pSmooth;
vgui::Button *m_pDriveCamera;
// player controls
vgui::Button *m_pPlayPauseResume;
vgui::Button *m_pGoStart;
vgui::Button *m_pGoEnd;
vgui::Button *m_pFastForward;
vgui::Button *m_pFastBackward;
vgui::Button *m_pPrevFrame;
vgui::Button *m_pNextFrame;
vgui::ProgressBar *m_pProgress;
vgui::Label *m_pProgressLabelFrame;
vgui::Label *m_pProgressLabelTime;
vgui::Slider *m_pSpeedScale;
vgui::Label *m_pSpeedScaleLabel;
vgui::DHANDLE< CDemoEditorPanel > m_hDemoEditor;
vgui::DHANDLE< CDemoSmootherPanel > m_hDemoSmoother;
vgui::DHANDLE< vgui::FileOpenDialog > m_hFileOpenDialog;
vgui::Button *m_pGo;
vgui::TextEntry *m_pGotoTick;
bool m_bInputActive;
int m_nOldCursor[2];
Vector m_ViewOrigin;
QAngle m_ViewAngles;
};
extern CDemoUIPanel *g_pDemoUI;
//-----------------------------------------------------------------------------
// Purpose: a special demo UI panel that is always visible allowing you
// to interact with the game and adding more features to the old
// demo UI panel.
//-----------------------------------------------------------------------------
class CDemoUIPanel2 : public vgui::Frame
{
DECLARE_CLASS_SIMPLE( CDemoUIPanel2, vgui::Frame );
public:
CDemoUIPanel2( vgui::Panel *pParentBkgnd, vgui::Panel *pParentFgnd, bool bPutToForeground );
~CDemoUIPanel2();
virtual void OnTick();
// Command issued
virtual void OnCommand(const char *command);
virtual void OnMessage(const KeyValues *params, vgui::VPANEL fromPanel);
virtual void OnVDMChanged( void );
virtual bool OverrideView( democmdinfo_t& info, int frame );
virtual void DrawDebuggingInfo();
static void Install( vgui::Panel *pParentBkgnd, vgui::Panel *pParentFgnd, bool bPutToForeground );
bool IsInDriveMode();
void SetDriveViewPoint( Vector &origin, QAngle &angle );
void GetDriveViewPoint( Vector &origin, QAngle &angle );
void MakePanelForeground( bool bPutToForeground );
protected:
void HandleInput( bool active );
bool IsHoldingFastForward();
void SetPlaybackScale( float scale );
float GetPlaybackScale();
MESSAGE_FUNC_CHARPTR( OnFileSelected, "FileSelected", fullpath );
void OnLoad();
vgui::Button *m_pStop;
vgui::Button *m_pLoad;
// player controls
vgui::Button *m_pPlayPauseResume;
vgui::Button *m_pGoStart;
vgui::Button *m_pGoEnd;
vgui::Button *m_pFastForward;
vgui::Button *m_pFastBackward;
vgui::Button *m_pPrevFrame;
vgui::Button *m_pNextFrame;
vgui::Slider *m_pProgress;
vgui::Label *m_pProgressLabelFrame;
vgui::Label *m_pProgressLabelTime;
vgui::Slider *m_pSpeedScale;
vgui::Label *m_pSpeedScaleLabel;
vgui::DHANDLE< vgui::FileOpenDialog > m_hFileOpenDialog;
bool m_bInputActive;
int m_nOldCursor[2];
// Bkgnd-fgnd switch
vgui::Panel *m_arrParents[2];
bool m_bIsInForeground;
};
extern CDemoUIPanel2 *g_pDemoUI2;
#endif // CL_DEMOUIPANEL_H