mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-29 09:33:00 +00:00
133 lines
3.2 KiB
C++
133 lines
3.2 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
//=======================================================================================//
|
|
|
|
#include "cbase.h"
|
|
|
|
#if defined( REPLAY_ENABLED )
|
|
|
|
#include "replaybrowseritemmanager.h"
|
|
#include "replaybrowserbasepage.h"
|
|
#include "replay/ireplaymoviemanager.h"
|
|
#include "replay/ireplaymanager.h"
|
|
#include "replay/ireplaymovie.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
using namespace vgui;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
extern IClientReplayContext *g_pClientReplayContext;
|
|
extern IReplayMovieManager *g_pReplayMovieManager;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CReplayItemManager : public IReplayItemManager
|
|
{
|
|
public:
|
|
virtual int GetItemCount()
|
|
{
|
|
return g_pReplayManager->GetReplayCount();
|
|
}
|
|
|
|
virtual void GetItems( CUtlLinkedList< IQueryableReplayItem *, int > &items )
|
|
{
|
|
g_pReplayManager->GetReplaysAsQueryableItems( items );
|
|
}
|
|
|
|
virtual IQueryableReplayItem *GetItem( ReplayItemHandle_t hItem )
|
|
{
|
|
return static_cast< CReplay * >( g_pReplayManager->GetReplay( (ReplayHandle_t)hItem ) );
|
|
}
|
|
|
|
virtual bool AreItemsMovies()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
virtual void DeleteItem( Panel *pPage, ReplayItemHandle_t hItem, bool bNotifyUI )
|
|
{
|
|
g_pReplayManager->DeleteReplay( (ReplayHandle_t)hItem, bNotifyUI );
|
|
}
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CMovieItemManager : public IReplayItemManager
|
|
{
|
|
public:
|
|
virtual int GetItemCount()
|
|
{
|
|
return g_pReplayMovieManager->GetMovieCount();
|
|
}
|
|
|
|
virtual void GetItems( CUtlLinkedList< IQueryableReplayItem *, int > &items )
|
|
{
|
|
g_pReplayMovieManager->GetMoviesAsQueryableItems( items );
|
|
}
|
|
|
|
virtual IQueryableReplayItem *GetItem( ReplayItemHandle_t hItem )
|
|
{
|
|
return g_pReplayMovieManager->GetMovie( (ReplayHandle_t)hItem );
|
|
}
|
|
|
|
virtual bool AreItemsMovies()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
virtual void DeleteItem( Panel *pPage, ReplayItemHandle_t hItem, bool bNotifyUI )
|
|
{
|
|
CReplayBrowserBasePage *pBasePage = static_cast< CReplayBrowserBasePage * >( pPage );
|
|
|
|
// Free the lock so the file is deletable
|
|
pBasePage->FreeDetailsPanelMovieLock();
|
|
|
|
// Delete the entry & the file
|
|
g_pReplayMovieManager->DeleteMovie( hItem );
|
|
}
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
static CReplayItemManager s_ReplayItemManager;
|
|
static CMovieItemManager s_MovieItemManager;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
IReplayItemManager *GetReplayItemManager()
|
|
{
|
|
return &s_ReplayItemManager;
|
|
}
|
|
|
|
IReplayItemManager *GetReplayMovieItemManager()
|
|
{
|
|
return &s_MovieItemManager;
|
|
}
|
|
|
|
IQueryableReplayItem *FindReplayItem( ReplayItemHandle_t hItem, IReplayItemManager **ppItemManager )
|
|
{
|
|
static IReplayItemManager *s_pItemManagers[] = { &s_ReplayItemManager, &s_MovieItemManager };
|
|
|
|
if ( ppItemManager )
|
|
{
|
|
*ppItemManager = NULL;
|
|
}
|
|
|
|
for ( int i = 0; i < 2; ++i )
|
|
{
|
|
IQueryableReplayItem *pItem = s_pItemManagers[ i ]->GetItem( hItem );
|
|
if ( pItem )
|
|
{
|
|
if ( ppItemManager )
|
|
{
|
|
*ppItemManager = s_pItemManagers[ i ];
|
|
}
|
|
return pItem;
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
#endif |