diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /utils/vp4/main.cpp | |
| download | archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.tar.xz archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.zip | |
Diffstat (limited to 'utils/vp4/main.cpp')
| -rw-r--r-- | utils/vp4/main.cpp | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/utils/vp4/main.cpp b/utils/vp4/main.cpp new file mode 100644 index 0000000..d497573 --- /dev/null +++ b/utils/vp4/main.cpp @@ -0,0 +1,147 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= + +#define NOWINRES +#define NOSERVICE +#define NOMCX +#define NOIME +#include <windows.h> + +#undef MessageBox +#undef PostMessage + +#include "stdafx.h" +#include "appframework/tier3app.h" +#include "tier2/tier2.h" +#include "inputsystem/iinputsystem.h" +#include "vgui_controls/controls.h" + +// root panel +vgui::Panel *g_pMainPanel = NULL; + + +//----------------------------------------------------------------------------- +// Purpose: Adds in any search paths +//----------------------------------------------------------------------------- +void AddFileSystemSearchPaths(const char *pszExeName) +{ + // search locally first + char pExeName[MAX_PATH]; + if ( ::GetModuleFileName( ( HINSTANCE )GetModuleHandle( NULL ), pExeName, sizeof(pExeName) ) ) + { + char pPlatform[MAX_PATH]; + Q_StripFilename( pExeName ); + Q_snprintf( pPlatform, sizeof(pPlatform), "%s\\..\\platform", pExeName ); + g_pFullFileSystem->AddSearchPath( pExeName, "EXECUTABLE_PATH"); + g_pFullFileSystem->AddSearchPath( pPlatform, "PLATFORM"); + g_pFullFileSystem->AddSearchPath( pPlatform, "SKIN"); + } + else + { + g_pFullFileSystem->AddSearchPath(".", "EXECUTABLE_PATH"); + g_pFullFileSystem->AddSearchPath("../platform/", "PLATFORM"); + g_pFullFileSystem->AddSearchPath("../platform/", "SKIN"); + } + + // add self as a pack file +// g_pFullFileSystem->AddPackFile(pszExeName, "PLATFORM"); +} + + +//----------------------------------------------------------------------------- +// Purpose: Sets up the main vgui +//----------------------------------------------------------------------------- +bool InitializeVGui( ) +{ + // add in the search paths + AddFileSystemSearchPaths(NULL); + + // Init the surface + g_pMainPanel = new vgui::Panel(NULL, NULL); + vgui::surface()->SetEmbeddedPanel( g_pMainPanel->GetVPanel() ); + + // load the scheme + g_pMainPanel->SetScheme( vgui::scheme()->LoadSchemeFromFile( "//PLATFORM/Resource/sourcescheme.res", "PLATFORM" ) ); + + // localization + g_pVGuiLocalize->AddFile( "Resource/platform_%language%.txt"); + g_pVGuiLocalize->AddFile( "Resource/vgui_%language%.txt"); + + // configuration settings + vgui::system()->SetUserConfigFile( "vp4config.txt", "EXECUTABLE_PATH" ); + + // Start vgui + vgui::ivgui()->Start(); + + // finish setting up main panel + vgui::SETUP_PANEL( g_pMainPanel ); + + return true; +} + + +//----------------------------------------------------------------------------- +// The application object +//----------------------------------------------------------------------------- +class CVP4App : public CVguiSteamApp +{ +public: + // Methods of IApplication + virtual bool Create(); + virtual int Main(); + virtual void Destroy() {} +}; + +DEFINE_WINDOWED_STEAM_APPLICATION_OBJECT( CVP4App ); + + +//----------------------------------------------------------------------------- +// The application object +//----------------------------------------------------------------------------- +bool CVP4App::Create() +{ + AppSystemInfo_t appSystems[] = + { + { "inputsystem.dll", INPUTSYSTEM_INTERFACE_VERSION }, + { "vgui2.dll", VGUI_IVGUI_INTERFACE_VERSION }, + { "p4lib.dll", P4_INTERFACE_VERSION }, + { "", "" } // Required to terminate the list + }; + + return AddSystems( appSystems ); +} + + +//----------------------------------------------------------------------------- +// Purpose: program entrypoint +//----------------------------------------------------------------------------- +int CVP4App::Main() +{ + if ( !InitializeVGui( ) ) + { + ::MessageBoxA( NULL, "Fatal Error: Could not initialize vgui.", "Steam - Fatal Error", MB_OK | MB_ICONERROR ); + return 0; + } + + // open the wizard + CVP4Dialog *dlg = SETUP_PANEL(new CVP4Dialog()); + dlg->SetParent(g_pMainPanel); + dlg->Activate(); + + // run vgui + while (vgui::ivgui()->IsRunning()) + { + vgui::ivgui()->RunFrame(); + } + + // save configuration + vgui::system()->SaveUserConfigFile(); + + // delete all the panels + delete g_pMainPanel; + + return 0; +} |