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