Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= 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
|