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.
133 lines
3.2 KiB
133 lines
3.2 KiB
//========= 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 |