summaryrefslogtreecommitdiff
path: root/game/client/tf/tf_streams.h
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/tf/tf_streams.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/client/tf/tf_streams.h')
-rw-r--r--game/client/tf/tf_streams.h133
1 files changed, 133 insertions, 0 deletions
diff --git a/game/client/tf/tf_streams.h b/game/client/tf/tf_streams.h
new file mode 100644
index 0000000..88279e3
--- /dev/null
+++ b/game/client/tf/tf_streams.h
@@ -0,0 +1,133 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#ifndef TF_STREAMS_H
+#define TF_STREAMS_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "vgui_controls/EditablePanel.h"
+
+using namespace vgui;
+
+#define MAX_STREAM_PANELS 5
+
+class CStreamInfo
+{
+public:
+ CStreamInfo() : m_numViewers( 0 ) {}
+public:
+ CUtlString m_sGlobalName;
+ int m_numViewers;
+ CUtlString m_sDisplayName;
+ CUtlString m_sTextDescription;
+ CUtlString m_sUpdatedAtStamp;
+ CUtlString m_sPreviewImage;
+ CUtlString m_sPreviewImageLocalFile;
+ CUtlString m_sPreviewImageSF;
+ CUtlString m_sLanguage;
+ CUtlString m_sCountry;
+ CUtlString m_sVideoFeedUrl;
+};
+
+class CTFStreamPanel : public EditablePanel
+{
+public:
+ DECLARE_CLASS_SIMPLE( CTFStreamPanel, EditablePanel );
+
+ CTFStreamPanel( Panel *parent, const char *panelName );
+ virtual ~CTFStreamPanel() {}
+
+ virtual void ApplySchemeSettings( IScheme *pScheme ) OVERRIDE;
+ virtual void PerformLayout() OVERRIDE;
+ virtual void OnCommand( const char *command ) OVERRIDE;
+
+ void SetGlobalName( const char *pszGlobalName ) { m_strStreamInfoGlobalName = pszGlobalName; }
+ CStreamInfo *GetStreamInfo() const;
+
+private:
+ void UpdatePanels();
+ void SetPreviewImage( const char *pszPreviewImageFile );
+
+ CUtlString m_strStreamInfoGlobalName;
+
+ class vgui::ImagePanel *m_pPreviewImage;
+};
+
+class CTFStreamListPanel : public EditablePanel, public CGameEventListener
+{
+public:
+ DECLARE_CLASS_SIMPLE( CTFStreamListPanel, EditablePanel );
+
+ CTFStreamListPanel( Panel *parent, const char *panelName );
+ virtual ~CTFStreamListPanel() {}
+
+ virtual void ApplySchemeSettings( IScheme *pScheme ) OVERRIDE;
+ virtual void OnThink() OVERRIDE;
+ virtual void OnCommand( const char *command ) OVERRIDE;
+
+ virtual void FireGameEvent( IGameEvent *event ) OVERRIDE;
+
+ CTFStreamPanel *m_arrStreamPanels[MAX_STREAM_PANELS];
+};
+
+enum ETwitchTvState_t
+{
+ k_ETwitchTvState_None,
+ k_ETwitchTvState_Loading,
+ k_ETwitchTvState_NoLink,
+ k_ETwitchTvState_Linked,
+ k_ETwitchTvState_Error
+};
+
+struct TwitchTvAccountInfo_t
+{
+ uint64 m_uiSteamID;
+
+ ETwitchTvState_t m_eTwitchTvState;
+ double m_dblTimeStampTwitchTvUpdate;
+ uint64 m_uiTwitchTvUserId;
+ CUtlString m_sTwitchTvChannel;
+};
+
+class CTFStreamManager : public CAutoGameSystemPerFrame
+{
+public:
+ CTFStreamManager();
+ ~CTFStreamManager();
+
+ virtual bool Init() OVERRIDE;
+ virtual void Update( float frametime ) OVERRIDE;
+ void RequestTopStreams();
+
+ CStreamInfo * GetStreamInfoByName( char const *szName );
+
+ CUtlVector< CStreamInfo >& GetStreamInfoVec() { return m_streamInfoVec; }
+
+ TwitchTvAccountInfo_t* GetTwitchTvAccountInfo( uint64 uiSteamID );
+
+private: // cache stream info
+ CUtlVector< CStreamInfo > m_streamInfoVec;
+
+private: // query for top X viewers
+ double m_dblTimeStampLastUpdate;
+ HTTPRequestHandle m_hHTTPRequestHandle;
+ CCallResult< CTFStreamManager, HTTPRequestCompleted_t > m_CallbackOnHTTPRequestCompleted;
+ void Steam_OnHTTPRequestCompletedStreams( HTTPRequestCompleted_t *p, bool bError );
+
+private: // checking for twitch account linking with steam account
+ void UpdateTwitchTvAccounts();
+
+ TwitchTvAccountInfo_t *m_pLoadingAccount;
+ CUtlVector< TwitchTvAccountInfo_t* > m_vecTwitchTvAccounts; // list of steam id to updated twitch account
+ HTTPRequestHandle m_hHTTPRequestHandleTwitchTv;
+ CCallResult< CTFStreamManager, HTTPRequestCompleted_t > m_CallbackOnHTTPRequestCompletedTwitchTv;
+ void Steam_OnHTTPRequestCompletedMyTwitchTv( HTTPRequestCompleted_t *p, bool bError );
+};
+CTFStreamManager *StreamManager();
+
+#endif // TF_STREAMS_H