mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-27 00:26:50 +00:00
240 lines
7.9 KiB
C++
240 lines
7.9 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
//=======================================================================================//
|
|
|
|
#ifndef REPLAYLISTITEMPANEL_H
|
|
#define REPLAYLISTITEMPANEL_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "replaybrowserbasepanel.h"
|
|
#include "replaybrowseritemmanager.h"
|
|
#include "replay/genericclassbased_replay.h"
|
|
#include "game_controls/slideshowpanel.h"
|
|
|
|
using namespace vgui;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Slideshow panel that adds all screenshots associated
|
|
// with a given replay.
|
|
//-----------------------------------------------------------------------------
|
|
class CReplayScreenshotSlideshowPanel : public CSlideshowPanel
|
|
{
|
|
DECLARE_CLASS_SIMPLE( CReplayScreenshotSlideshowPanel, CSlideshowPanel );
|
|
public:
|
|
CReplayScreenshotSlideshowPanel( Panel *pParent, const char *pName, ReplayHandle_t hReplay );
|
|
|
|
virtual void PerformLayout();
|
|
|
|
private:
|
|
ReplayHandle_t m_hReplay;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: An individual Replay thumbnail, with download button, title, etc.
|
|
//-----------------------------------------------------------------------------
|
|
class CExButton;
|
|
class CExLabel;
|
|
class IReplayItemManager;
|
|
class CMoviePlayerPanel;
|
|
|
|
class CReplayBrowserThumbnail : public CReplayBasePanel
|
|
{
|
|
DECLARE_CLASS_SIMPLE( CReplayBrowserThumbnail, CReplayBasePanel );
|
|
public:
|
|
CReplayBrowserThumbnail( Panel *pParent, const char *pName, QueryableReplayItemHandle_t hReplayItem, IReplayItemManager *pReplayItemManager );
|
|
~CReplayBrowserThumbnail();
|
|
|
|
virtual void ApplySchemeSettings( IScheme *pScheme );
|
|
virtual void PerformLayout();
|
|
virtual void OnMousePressed( MouseCode code );
|
|
|
|
virtual void OnTick();
|
|
|
|
virtual void OnCommand( const char *pCommand );
|
|
|
|
void UpdateTitleText();
|
|
|
|
void SetReplayItem( QueryableReplayItemHandle_t hReplayItem );
|
|
|
|
CGenericClassBasedReplay *GetReplay();
|
|
IQueryableReplayItem *GetReplayItem();
|
|
|
|
MESSAGE_FUNC_PARAMS( OnDownloadClicked, "Download", pParams );
|
|
MESSAGE_FUNC_PARAMS( OnDeleteReplay, "delete_replayitem", pParams );
|
|
|
|
CCrossfadableImagePanel *m_pScreenshotThumb;
|
|
QueryableReplayItemHandle_t m_hReplayItem;
|
|
|
|
private:
|
|
void SetupReplayItemUserData( void *pUserData );
|
|
void UpdateProgress( bool bDownloadPhase, const CReplay *pReplay );
|
|
|
|
Label *m_pTitle;
|
|
Label *m_pDownloadLabel;
|
|
Label *m_pRecordingInProgressLabel;
|
|
ProgressBar *m_pDownloadProgress;
|
|
CExButton *m_pDownloadButton;
|
|
CExButton *m_pDeleteButton;
|
|
Label *m_pErrorLabel;
|
|
CMoviePlayerPanel *m_pMoviePlayer;
|
|
Panel *m_pDownloadOverlay;
|
|
EditablePanel *m_pBorderPanel;
|
|
Color m_clrHighlight;
|
|
Color m_clrDefaultBg;
|
|
bool m_bMouseOver;
|
|
IReplayItemManager *m_pReplayItemManager;
|
|
float m_flLastMovieScrubTime;
|
|
float m_flHoverStartTime;
|
|
float m_flLastProgressChangeTime;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: A row of Replay thumbnails (CReplayBrowserThumbnail's)
|
|
//-----------------------------------------------------------------------------
|
|
class CReplayBrowserThumbnailRow : public EditablePanel
|
|
{
|
|
DECLARE_CLASS_SIMPLE( CReplayBrowserThumbnailRow, EditablePanel );
|
|
public:
|
|
CReplayBrowserThumbnailRow( Panel *pParent, const char *pName, IReplayItemManager *pReplayItemManager );
|
|
|
|
void AddReplayThumbnail( const IQueryableReplayItem *pReplay );
|
|
void AddReplayThumbnail( QueryableReplayItemHandle_t hReplayItem );
|
|
void DeleteReplayItemThumbnail( const IQueryableReplayItem *pReplayItem );
|
|
int GetNumReplayItems() const { return m_vecThumbnails.Count(); }
|
|
int GetNumVisibleReplayItems() const;
|
|
|
|
virtual void ApplySchemeSettings( IScheme *pScheme );
|
|
virtual void PerformLayout();
|
|
|
|
CReplayBrowserThumbnail *FindThumbnail( const IQueryableReplayItem *pReplay );
|
|
|
|
CUtlVector< CReplayBrowserThumbnail * > m_vecThumbnails;
|
|
IReplayItemManager *m_pReplayItemManager;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: A collection of CReplayBrowserThumbnailRows containing replays
|
|
// recorded on a given day.
|
|
//-----------------------------------------------------------------------------
|
|
class CExLabel;
|
|
class CExButton;
|
|
class CReplayListPanel;
|
|
|
|
class CBaseThumbnailCollection : public EditablePanel
|
|
{
|
|
DECLARE_CLASS_SIMPLE( CBaseThumbnailCollection, EditablePanel );
|
|
public:
|
|
CBaseThumbnailCollection( CReplayListPanel *pParent, const char *pName, IReplayItemManager *pReplayItemManager );
|
|
|
|
void AddReplay( const IQueryableReplayItem *pItem );
|
|
|
|
virtual bool IsMovieCollection() const = 0;
|
|
|
|
void CleanupUIForReplayItem( ReplayItemHandle_t hReplayItem );
|
|
|
|
virtual void PerformLayout();
|
|
virtual void ApplySchemeSettings( IScheme *pScheme );
|
|
|
|
void RemoveEmptyRows();
|
|
void RemoveAll();
|
|
|
|
void OnUpdated();
|
|
|
|
void OnCommand( const char *pCommand );
|
|
|
|
CReplayBrowserThumbnailRow *FindReplayItemThumbnailRow( const IQueryableReplayItem *pReplayItem );
|
|
|
|
inline int GetNumRows() const { return m_vecRows.Count(); }
|
|
|
|
typedef CUtlVector< CReplayBrowserThumbnailRow * > RowContainer_t;
|
|
RowContainer_t m_vecRows;
|
|
|
|
protected:
|
|
// Called from PerformLayout() - layout any panels that should appear at the top (vertically)-most position
|
|
virtual void LayoutUpperPanels( int nStartY, int nBgWidth ) = 0;
|
|
virtual void LayoutBackgroundPanel( int nWide, int nTall ) {}
|
|
virtual Panel *GetLowestPanel( int &nVerticalBuffer ) = 0;
|
|
|
|
void UpdateViewingPage( void );
|
|
|
|
int m_nStartX;
|
|
|
|
protected:
|
|
CExLabel *m_pNoReplayItemsLabel;
|
|
IReplayItemManager *m_pReplayItemManager;
|
|
|
|
CExButton *m_pShowNextButton;
|
|
CExButton *m_pShowPrevButton;
|
|
CUtlVector<ReplayItemHandle_t> m_vecReplays;
|
|
int m_iViewingPage;
|
|
|
|
int m_nReplayThumbnailsPerRow;
|
|
int m_nMaxRows;
|
|
|
|
CExLabel *m_pCaratLabel;
|
|
CExLabel *m_pTitleLabel;
|
|
CExButton *m_pRenderAllButton;
|
|
|
|
private:
|
|
int GetRowStartY();
|
|
|
|
CReplayListPanel *m_pParentListPanel; // Parent gets altered so we keep this cached ptr around
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
class CReplayThumbnailCollection : public CBaseThumbnailCollection
|
|
{
|
|
DECLARE_CLASS_SIMPLE( CReplayThumbnailCollection, CBaseThumbnailCollection );
|
|
public:
|
|
CReplayThumbnailCollection( CReplayListPanel *pParent, const char *pName, IReplayItemManager *pReplayItemManager );
|
|
|
|
virtual bool IsMovieCollection() const;
|
|
|
|
virtual void PerformLayout();
|
|
virtual void ApplySchemeSettings( IScheme *pScheme );
|
|
|
|
virtual void LayoutUpperPanels( int nStartY, int nBgWidth );
|
|
virtual void LayoutBackgroundPanel( int nWide, int nTall );
|
|
virtual Panel *GetLowestPanel( int &nVerticalBuffer );
|
|
|
|
Panel *m_pLinePanel;
|
|
CExLabel *m_pWarningLabel;
|
|
Panel *m_pUnconvertedBg;
|
|
};
|
|
|
|
#define OLDER_MOVIES_COLLECTION -2
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
class CMovieThumbnailCollection : public CBaseThumbnailCollection
|
|
{
|
|
DECLARE_CLASS_SIMPLE( CMovieThumbnailCollection, CBaseThumbnailCollection );
|
|
public:
|
|
CMovieThumbnailCollection( CReplayListPanel *pParent, const char *pName, IReplayItemManager *pReplayItemManager,
|
|
int nDay, int nMonth, int nYear, bool bShowSavedMoviesLabel );
|
|
CMovieThumbnailCollection( CReplayListPanel *pParent, const char *pName, IReplayItemManager *pReplayItemManager,
|
|
bool bShowSavedMoviesLabel );
|
|
|
|
bool DoesDateMatch( int nDay, int nMonth, int nYear );
|
|
virtual bool IsMovieCollection() const;
|
|
|
|
private:
|
|
void Init( int nDay, int nMonth, int nYear, bool bShowSavedMoviesLabel );
|
|
virtual void PerformLayout();
|
|
virtual void ApplySchemeSettings( IScheme *pScheme );
|
|
|
|
Panel *GetLowestPanel( int &nVerticalBuffer );
|
|
void LayoutUpperPanels( int nStartY, int nBgWidth );
|
|
|
|
int m_nDay, m_nMonth, m_nYear;
|
|
CExLabel *m_pDateLabel;
|
|
bool m_bShowSavedMoviesLabel;
|
|
};
|
|
|
|
#endif // REPLAYLISTITEMPANEL_H
|