diff --git a/public/engine/hoststate.h b/public/engine/hoststate.h new file mode 100644 index 00000000..38283ea7 --- /dev/null +++ b/public/engine/hoststate.h @@ -0,0 +1,84 @@ +#include "tier1/utlstring.h" +#include "tier1/KeyValues.h" +#include "appframework/IAppSystem.h" +#include "tier2/tier2.h" + +struct ResourceManifestDesc_t; + +enum HostStateRequestType_t +{ + HSR_IDLE = 1, + HSR_GAME, + HSR_SOURCETV_RELAY, + HSR_QUIT +}; + +enum HostStateRequestMode_t +{ + HM_LEVEL_LOAD_SERVER = 1, + HM_CONNECT, + HM_CHANGE_LEVEL, + HM_LEVEL_LOAD_LISTEN, + HM_LOAD_SAVE, + HM_PLAY_DEMO, + HM_SOURCETV_RELAY, + HM_ADDON_DOWNLOAD +}; + +struct CHostStateRequest +{ + HostStateRequestType_t m_iType; + CUtlString m_LoopModeType; + CUtlString m_Desc; + bool m_bActive; + unsigned int m_ID; + HostStateRequestMode_t m_iMode; + CUtlString m_LevelName; + bool m_bChangelevel; + CUtlString m_SaveGame; + CUtlString m_Address; + CUtlString m_DemoFile; + bool m_bLoadMap; + CUtlString m_Addons; + KeyValues *m_pKV; +}; + +class ISwitchLoopModeStatusNotify +{ + virtual void OnSwitchLoopModeFinished(const char *, uint32, bool) = 0; +}; + +class IHostStateMgr : public IAppSystem +{ + virtual void RequestHS_Quit(void) = 0; + virtual void RequestHS_Idle(KeyValues *) = 0; + virtual void RequestHS_Connect(const char *, KeyValues *) = 0; + virtual void RequestHS_ChangelevelReconnect(const char *, KeyValues *) = 0; + virtual void RequestHS_LoadSpawnGroup(const char *, const char *, bool, KeyValues *) = 0; + virtual void RequestHS_LoadSaveGame(const char *, const char *, KeyValues *) = 0; + virtual void RequestHS_PlayDemo(const char *, const char *, bool, KeyValues *) = 0; + virtual void RequestHS_PlayBroadcast(const char *, KeyValues *) = 0; + virtual void RequestHS_DownloadAddons(KeyValues *) = 0; + virtual void RequestHS_SourceTVRelay(const char *, KeyValues *) = 0; + virtual void RequestHS_ReloadLastSaveGame(void) = 0; + virtual void RequestHS_RestartSpawnGroups(void) = 0; +}; + +class CHostStateMgr : public CTier2AppSystem, public ISwitchLoopModeStatusNotify +{ +public: + CHostStateRequest *m_PendingRequest; // 0x30 + CHostStateRequest *m_CurrentRequest; // 0x38 + CUtlString m_LoopModeType; // 0x40 console/game + KeyValues *m_pGameConfigurationKV; // 0x48 + CUtlString m_LoopMode; // 0x50 + KeyValues *m_pConnectKV; // 0x58 + CUtlString m_LoopModeName; // 0x60 + CUtlString m_Address; // 0x68 + CUtlString m_SaveGame; // 0x70 + CUtlString m_LevelName; // 0x78 + CUtlString m_Addons; // 0x80 + KeyValues *m_pKV; // 0x88 + int m_ID; // 0x90 + CUtlVector m_QueuedRequests; // 0x98 +}; diff --git a/public/tier2/tier2.h b/public/tier2/tier2.h index 8d6ccdc1..66429609 100644 --- a/public/tier2/tier2.h +++ b/public/tier2/tier2.h @@ -13,7 +13,7 @@ #endif #include "tier1/tier1.h" - +struct ResourceManifestDesc_t; //----------------------------------------------------------------------------- // Call this to connect to/disconnect from all tier 2 libraries. @@ -80,6 +80,9 @@ public: DisconnectTier2Libraries(); BaseClass::Disconnect(); } +private: + CUtlVector m_manualManifests; + int m_nAppSysTier2LibraryConnects; };