Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

179 lines
4.3 KiB

5 years ago
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//
//===========================================================================//
#include "interface.h"
#include <windows.h>
//#include "..\..\tracker\common\winlite.h"
#include "vgui_controls/Controls.h"
#include "vgui/vgui.h"
#include "VGUI\IPanel.h"
#include "VGUI\IScheme.h"
#include "VGUI\ISurface.h"
#include "VGUI\ILocalize.h"
#include "VGUI\IVGui.h"
#include "vgui_controls/Panel.h"
#include "filesystem.h"
#include "tier0/icommandline.h"
#include "appframework/tier3app.h"
#include "inputsystem/iinputsystem.h"
#include "CControlCatalog.h"
#include <stdio.h>
//-----------------------------------------------------------------------------
// Purpose: Warning/Msg call back through this API
// Input : type -
// *pMsg -
// Output : SpewRetval_t
//-----------------------------------------------------------------------------
SpewRetval_t SpewFunc( SpewType_t type, char const *pMsg )
{
switch ( type )
{
default:
case SPEW_MESSAGE:
case SPEW_ASSERT:
case SPEW_LOG:
OutputDebugString( pMsg );
break;
case SPEW_WARNING:
OutputDebugString( pMsg );
break;
case SPEW_ERROR:
OutputDebugString( pMsg );
exit( -1 );
break;
}
return SPEW_CONTINUE;
}
//-----------------------------------------------------------------------------
// Purpose: Entry point
// loads interfaces and initializes dialog
//-----------------------------------------------------------------------------
static CreateInterfaceFn s_pFactoryList[2];
void *VGuiFactory( const char *pName, int *pReturnCode )
{
for ( int i = 0; i < ARRAYSIZE( s_pFactoryList ); ++i )
{
void *pInterface = s_pFactoryList[i]( pName, pReturnCode );
if ( pInterface )
return pInterface;
}
return NULL;
}
//-----------------------------------------------------------------------------
// The application object
//-----------------------------------------------------------------------------
class CPanelZooApp : public CVguiSteamApp
{
typedef CVguiSteamApp BaseClass;
public:
// Methods of IApplication
virtual bool Create();
virtual bool PreInit();
virtual int Main();
virtual void Destroy() {}
};
DEFINE_WINDOWED_STEAM_APPLICATION_OBJECT( CPanelZooApp );
//-----------------------------------------------------------------------------
// The application object
//-----------------------------------------------------------------------------
bool CPanelZooApp::Create()
{
SpewOutputFunc( SpewFunc );
SpewActivate( "panelzoo", 2 );
AppSystemInfo_t appSystems[] =
{
{ "inputsystem.dll", INPUTSYSTEM_INTERFACE_VERSION },
{ "vgui2.dll", VGUI_IVGUI_INTERFACE_VERSION },
{ "", "" } // Required to terminate the list
};
return AddSystems( appSystems );
}
//-----------------------------------------------------------------------------
// Setup
//-----------------------------------------------------------------------------
bool CPanelZooApp::PreInit()
{
if ( !BaseClass::PreInit() )
return false;
if ( !BaseClass::SetupSearchPaths( NULL, false, true ) )
{
::MessageBox( NULL, "Error", "Unable to initialize file system\n", MB_OK );
return false;
}
g_pFullFileSystem->AddSearchPath( "platform", "PLATFORM" );
return true;
}
//-----------------------------------------------------------------------------
// Purpose: Entry point
//-----------------------------------------------------------------------------
int CPanelZooApp::Main()
{
// In order to load resource files the file must be in your vgui filesystem path.
// g_pFullFileSystem->AddSearchPath("../", "resources");
// Init the surface
// vgui::surface()->Init();
// Make a embedded panel
vgui::Panel *panel = new vgui::Panel(NULL, "TopPanel");
vgui::surface()->SetEmbeddedPanel( panel->GetVPanel() );
// Load the scheme
if (!vgui::scheme()->LoadSchemeFromFile( "//platform/Resource/SourceScheme.res", "PANELZOO" ))
return 1;
// localization
g_pVGuiLocalize->AddFile( "Resource/platform_english.txt" );
g_pVGuiLocalize->AddFile( "Resource/valve_%language%.txt" );
g_pVGuiLocalize->AddFile( "Resource/vgui_%language%.txt" );
// Start vgui
vgui::ivgui()->Start();
// Add our main window
CControlCatalog *panelZoo = new CControlCatalog();
panelZoo->Activate();
// Run app frame loop
while (vgui::ivgui()->IsRunning())
{
vgui::ivgui()->RunFrame();
}
delete panelZoo;
// delete panel;
return 1;
}