mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-17 06:03:02 +00:00
1
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user