summaryrefslogtreecommitdiff
path: root/game/client/replay/vgui/replaybrowseritemmanager.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/replay/vgui/replaybrowseritemmanager.cpp
downloadarchived-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.cpp133
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