summaryrefslogtreecommitdiff
path: root/appframework/posixapp.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /appframework/posixapp.cpp
downloadarchived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.tar.xz
archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.zip
Diffstat (limited to 'appframework/posixapp.cpp')
-rw-r--r--appframework/posixapp.cpp182
1 files changed, 182 insertions, 0 deletions
diff --git a/appframework/posixapp.cpp b/appframework/posixapp.cpp
new file mode 100644
index 0000000..cae3804
--- /dev/null
+++ b/appframework/posixapp.cpp
@@ -0,0 +1,182 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Pieces of the application framework, shared between POSIX systems (Mac OS X, Linux, etc)
+//
+// $Revision: $
+// $NoKeywords: $
+//=============================================================================//
+#include "appframework/AppFramework.h"
+#include "tier0/dbg.h"
+#include "tier0/icommandline.h"
+#include "interface.h"
+#include "filesystem.h"
+#include "appframework/IAppSystemGroup.h"
+#include "filesystem_init.h"
+#include "tier1/convar.h"
+#include "vstdlib/cvar.h"
+#include "togl/rendermechanism.h"
+
+// NOTE: This has to be the last file included! (turned off below, since this is included like a header)
+#include "tier0/memdbgon.h"
+
+//-----------------------------------------------------------------------------
+// Globals...
+//-----------------------------------------------------------------------------
+HINSTANCE s_HInstance;
+
+//#if !defined(LINUX)
+//static CSimpleLoggingListener s_SimpleLoggingListener;
+//ILoggingListener *g_pDefaultLoggingListener = &s_SimpleLoggingListener;
+//#endif
+
+//-----------------------------------------------------------------------------
+// HACK: Since I don't want to refit vgui yet...
+//-----------------------------------------------------------------------------
+void *GetAppInstance()
+{
+ return s_HInstance;
+}
+
+
+//-----------------------------------------------------------------------------
+// Sets the application instance, should only be used if you're not calling AppMain.
+//-----------------------------------------------------------------------------
+void SetAppInstance( void* hInstance )
+{
+ s_HInstance = (HINSTANCE)hInstance;
+}
+
+
+//-----------------------------------------------------------------------------
+// Version of AppMain used by windows applications
+//-----------------------------------------------------------------------------
+
+int AppMain( void* hInstance, void* hPrevInstance, const char* lpCmdLine, int nCmdShow, CAppSystemGroup *pAppSystemGroup )
+{
+ Assert( 0 );
+ return -1;
+}
+
+//#if !defined(LINUX)
+//static CNonFatalLoggingResponsePolicy s_NonFatalLoggingResponsePolicy;
+//#endif
+
+//-----------------------------------------------------------------------------
+// Version of AppMain used by console applications
+//-----------------------------------------------------------------------------
+int AppMain( int argc, char **argv, CAppSystemGroup *pAppSystemGroup )
+{
+ Assert( pAppSystemGroup );
+
+ //#if !defined(LINUX)
+ // LoggingSystem_SetLoggingResponsePolicy( &s_NonFatalLoggingResponsePolicy );
+ //#endif
+ s_HInstance = NULL;
+ CommandLine()->CreateCmdLine( argc, argv );
+
+ return pAppSystemGroup->Run( );
+}
+
+
+
+//-----------------------------------------------------------------------------
+//
+// Default implementation of an application meant to be run using Steam
+//
+//-----------------------------------------------------------------------------
+
+
+//-----------------------------------------------------------------------------
+// Constructor
+//-----------------------------------------------------------------------------
+CSteamApplication::CSteamApplication( CSteamAppSystemGroup *pAppSystemGroup )
+{
+ m_pChildAppSystemGroup = pAppSystemGroup;
+ m_pFileSystem = NULL;
+}
+
+
+//-----------------------------------------------------------------------------
+// Create necessary interfaces
+//-----------------------------------------------------------------------------
+bool CSteamApplication::Create( )
+{
+ FileSystem_SetErrorMode( FS_ERRORMODE_NONE );
+
+ char pFileSystemDLL[MAX_PATH];
+ if ( FileSystem_GetFileSystemDLLName( pFileSystemDLL, MAX_PATH, m_bSteam ) != FS_OK )
+ return false;
+
+ // Add in the cvar factory
+ AppModule_t cvarModule = LoadModule( VStdLib_GetICVarFactory() );
+ AddSystem( cvarModule, CVAR_INTERFACE_VERSION );
+
+ AppModule_t fileSystemModule = LoadModule( pFileSystemDLL );
+ m_pFileSystem = (IFileSystem*)AddSystem( fileSystemModule, FILESYSTEM_INTERFACE_VERSION );
+ if ( !m_pFileSystem )
+ {
+ Error( "Unable to load %s", pFileSystemDLL );
+ return false;
+ }
+
+ return true;
+}
+
+
+//-----------------------------------------------------------------------------
+// The file system pointer is invalid at this point
+//-----------------------------------------------------------------------------
+void CSteamApplication::Destroy()
+{
+ m_pFileSystem = NULL;
+}
+
+
+//-----------------------------------------------------------------------------
+// Pre-init, shutdown
+//-----------------------------------------------------------------------------
+bool CSteamApplication::PreInit( )
+{
+ return true;
+}
+
+void CSteamApplication::PostShutdown( )
+{
+}
+
+
+//-----------------------------------------------------------------------------
+// Run steam main loop
+//-----------------------------------------------------------------------------
+int CSteamApplication::Main( )
+{
+ // Now that Steam is loaded, we can load up main libraries through steam
+ m_pChildAppSystemGroup->Setup( m_pFileSystem, this );
+ return m_pChildAppSystemGroup->Run( );
+}
+
+
+int CSteamApplication::Startup()
+{
+ int nRetVal = BaseClass::Startup();
+ if ( GetErrorStage() != NONE )
+ return nRetVal;
+
+ if ( FileSystem_SetBasePaths( m_pFileSystem ) != FS_OK )
+ return 0;
+
+ // Now that Steam is loaded, we can load up main libraries through steam
+ m_pChildAppSystemGroup->Setup( m_pFileSystem, this );
+ return m_pChildAppSystemGroup->Startup();
+}
+
+
+void CSteamApplication::Shutdown()
+{
+ m_pChildAppSystemGroup->Shutdown();
+ BaseClass::Shutdown();
+}
+
+// Turn off memdbg macros (turned on up top) since this is included like a header
+#include "tier0/memdbgoff.h"
+