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