summaryrefslogtreecommitdiff
path: root/gameui/VGuiSystemModuleLoader.h
diff options
context:
space:
mode:
Diffstat (limited to 'gameui/VGuiSystemModuleLoader.h')
-rw-r--r--gameui/VGuiSystemModuleLoader.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/gameui/VGuiSystemModuleLoader.h b/gameui/VGuiSystemModuleLoader.h
new file mode 100644
index 0000000..76493db
--- /dev/null
+++ b/gameui/VGuiSystemModuleLoader.h
@@ -0,0 +1,97 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Handles loading/unloading of different vgui modules into a shared context
+//
+//=============================================================================//
+
+#ifndef VGUISYSTEMMODULELOADER_H
+#define VGUISYSTEMMODULELOADER_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "vgui_controls/PHandle.h"
+#include "utlvector.h"
+#include "IVGuiModuleLoader.h"
+
+class IVGuiModule;
+
+class KeyValues;
+
+//-----------------------------------------------------------------------------
+// Purpose: Handles loading/unloading of different vgui modules into a shared context
+//-----------------------------------------------------------------------------
+class CVGuiSystemModuleLoader : public IVGuiModuleLoader
+{
+public:
+ CVGuiSystemModuleLoader();
+ ~CVGuiSystemModuleLoader();
+
+ // loads all the modules in the platform
+ bool LoadPlatformModules(CreateInterfaceFn *factorylist, int factorycount, bool useSteamModules);
+
+ // returns true if the module loader has loaded the modules
+ bool IsPlatformReady();
+
+ // needs to be called every frame - updates all the modules states
+ void RunFrame();
+
+ // returns number of modules loaded
+ int GetModuleCount();
+
+ // returns the string menu name (unlocalized) of a module
+ // moduleIndex is of the range [0, GetModuleCount())
+ const char *GetModuleLabel(int moduleIndex);
+
+ bool IsModuleHidden(int moduleIndex);
+ bool IsModuleVisible(int moduleIndex);
+
+ // returns a modules interface factory
+ CreateInterfaceFn GetModuleFactory(int moduleIndex);
+
+ // brings the specified module to the foreground
+ bool ActivateModule(int moduleIndex);
+ bool ActivateModule(const char *moduleName);
+
+ // Deactivates all the modules (puts them into in inactive but recoverable state)
+ void DeactivatePlatformModules();
+
+ // Reenables all the deactivated platform modules
+ void ReactivatePlatformModules();
+
+ // shuts down all the platform modules
+ void ShutdownPlatformModules();
+
+ // unload all active platform modules/dlls from memory
+ void UnloadPlatformModules();
+
+ // posts a message to all active modules
+ void PostMessageToAllModules(KeyValues *message);
+
+ // sets the the platform should update and restart when it quits
+ void SetPlatformToRestart();
+
+ // returns true if the platform should restart after exit
+ bool ShouldPlatformRestart();
+
+private:
+ // sets up all the modules for use
+ bool InitializeAllModules(CreateInterfaceFn *factorylist, int factorycount);
+
+ bool m_bModulesInitialized;
+ bool m_bPlatformShouldRestartAfterExit;
+
+ struct module_t
+ {
+ CSysModule *module;
+ IVGuiModule *moduleInterface;
+ KeyValues *data;
+ };
+
+ CUtlVector<module_t> m_Modules;
+ KeyValues *m_pPlatformModuleData;
+};
+
+extern CVGuiSystemModuleLoader g_VModuleLoader;
+
+#endif // VGUISYSTEMMODULELOADER_H