//----------------------------------------------------------------------------- // Run steam main loop //----------------------------------------------------------------------------- int CSteamApplication::Main() { // Now that Steam is loaded, we can load up main libraries through steam if ( FileSystem_SetBasePaths( m_pFileSystem ) != FS_OK ) return 0; m_pChildAppSystemGroup->Setup( m_pFileSystem, this ); return m_pChildAppSystemGroup->Run(); }
bool FileSystem_SetGame( const char *szModDir ) { g_pFullFileSystem->RemoveAllSearchPaths(); if ( FileSystem_SetBasePaths( g_pFullFileSystem ) != FS_OK ) return false; CFSSearchPathsInit fsInit; fsInit.m_pDirectoryName = szModDir; fsInit.m_pFileSystem = g_pFullFileSystem; return ( FileSystem_LoadSearchPaths( fsInit ) == FS_OK ); }
//----------------------------------------------------------------------------- // Use this version in cases where you can't control the main loop and // expect to be ticked //----------------------------------------------------------------------------- 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(); }
//----------------------------------------------------------------------------- // Mounds a particular steam cache //----------------------------------------------------------------------------- FSReturnCode_t FileSystem_MountContent( CFSMountContentInfo &mountContentInfo ) { // This part is Steam-only. if ( mountContentInfo.m_pFileSystem->IsSteam() ) { // Find out the "extra app id". This is for tools, which want to mount a base app's filesystem // like HL2, then mount the SDK content (tools materials and models, etc) in addition. int nExtraAppId = -1; if ( mountContentInfo.m_bToolsMode ) { FSReturnCode_t ret = GetSteamExtraAppId( mountContentInfo.m_pDirectoryName, &nExtraAppId ); if ( ret != FS_OK ) return ret; } // Set our working directory temporarily so Steam can remember it. // This is what Steam strips off absolute filenames like c:\program files\valve\steam\steamapps\username\sourcesdk // to get to the relative part of the path. char baseDir[MAX_PATH], oldWorkingDir[MAX_PATH]; if ( !FileSystem_GetBaseDir( baseDir, sizeof( baseDir ) ) ) return SetupFileSystemError( false, FS_INVALID_PARAMETERS, "FileSystem_GetBaseDir failed." ); Q_getwd( oldWorkingDir, sizeof( oldWorkingDir ) ); _chdir( baseDir ); // Filesystem_tools needs to add dependencies in here beforehand. FilesystemMountRetval_t retVal = mountContentInfo.m_pFileSystem->MountSteamContent( nExtraAppId ); _chdir( oldWorkingDir ); if ( retVal != FILESYSTEM_MOUNT_OK ) return SetupFileSystemError( true, FS_UNABLE_TO_INIT, "Unable to mount Steam content in the file system" ); } return FileSystem_SetBasePaths( mountContentInfo.m_pFileSystem ); }