diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/replay/vgui/replaybrowseritemmanager.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/replay/vgui/replaybrowseritemmanager.cpp')
| -rw-r--r-- | game/client/replay/vgui/replaybrowseritemmanager.cpp | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/game/client/replay/vgui/replaybrowseritemmanager.cpp b/game/client/replay/vgui/replaybrowseritemmanager.cpp new file mode 100644 index 0000000..3776b7b --- /dev/null +++ b/game/client/replay/vgui/replaybrowseritemmanager.cpp @@ -0,0 +1,133 @@ +//========= 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
\ No newline at end of file |