SB_API bool S_CALLTYPE InitSafe() { bool ret = SteamAPI_InitSafe(); if (ret) { ret = s_SteamContext.Init(); } return ret; }
void Interfaces::Load(CreateInterfaceFn interfaceFactory, CreateInterfaceFn gameServerFactory) { ConnectTier1Libraries(&interfaceFactory, 1); ConnectTier2Libraries(&interfaceFactory, 1); ConnectTier3Libraries(&interfaceFactory, 1); vguiLibrariesAvailable = vgui::VGui_InitInterfacesList("ExternalExtensions", &interfaceFactory, 1); pEngineClient = (IVEngineClient *)interfaceFactory(VENGINE_CLIENT_INTERFACE_VERSION, nullptr); pEngineTool = (IEngineTool *)interfaceFactory(VENGINETOOL_INTERFACE_VERSION, nullptr); pGameEventManager = (IGameEventManager2 *)interfaceFactory(INTERFACEVERSION_GAMEEVENTSMANAGER2, nullptr); pModelInfoClient = (IVModelInfoClient *)interfaceFactory(VMODELINFO_CLIENT_INTERFACE_VERSION, nullptr); pRenderView = (IVRenderView *)interfaceFactory(VENGINE_RENDERVIEW_INTERFACE_VERSION, nullptr); CreateInterfaceFn gameClientFactory; pEngineTool->GetClientFactory(gameClientFactory); pClientDLL = (IBaseClientDLL*)gameClientFactory(CLIENT_DLL_INTERFACE_VERSION, nullptr); pClientEntityList = (IClientEntityList*)gameClientFactory(VCLIENTENTITYLIST_INTERFACE_VERSION, nullptr); pSteamAPIContext = new CSteamAPIContext(); steamLibrariesAvailable = SteamAPI_InitSafe() && pSteamAPIContext->Init(); g_pEntityList = dynamic_cast<CBaseEntityList *>(Interfaces::pClientEntityList); char dll[MAX_PATH]; bool steam; if (FileSystem_GetFileSystemDLLName(dll, sizeof(dll), steam) == FS_OK) { CFSLoadModuleInfo fsLoadModuleInfo; fsLoadModuleInfo.m_bSteam = steam; fsLoadModuleInfo.m_pFileSystemDLLName = dll; fsLoadModuleInfo.m_ConnectFactory = interfaceFactory; if (FileSystem_LoadFileSystemModule(fsLoadModuleInfo) == FS_OK) { CFSMountContentInfo fsMountContentInfo; fsMountContentInfo.m_bToolsMode = fsLoadModuleInfo.m_bToolsMode; fsMountContentInfo.m_pDirectoryName = fsLoadModuleInfo.m_GameInfoPath; fsMountContentInfo.m_pFileSystem = fsLoadModuleInfo.m_pFileSystem; if (FileSystem_MountContent(fsMountContentInfo) == FS_OK) { CFSSearchPathsInit fsSearchPathsInit; fsSearchPathsInit.m_pDirectoryName = fsLoadModuleInfo.m_GameInfoPath; fsSearchPathsInit.m_pFileSystem = fsLoadModuleInfo.m_pFileSystem; if (FileSystem_LoadSearchPaths(fsSearchPathsInit) == FS_OK) { Interfaces::pFileSystem = fsLoadModuleInfo.m_pFileSystem; } } } } }
//----------------------------------------------------------------------------- // Purpose: Initialize the steam3 connection //----------------------------------------------------------------------------- void CClientSteamContext::Activate() { if ( m_bActive ) return; m_bActive = true; #if !defined( NO_STEAM ) SteamAPI_InitSafe(); // ignore failure, that will fall out later when they don't get a valid logon cookie SteamAPI_SetTryCatchCallbacks( false ); // We don't use exceptions, so tell steam not to use try/catch in callback handlers Init(); // Steam API context init UpdateLoggedOnState(); Msg( "CClientSteamContext logged on = %d\n", m_bLoggedOn ); #endif }
bool CSteam::Initialize() { if (m_bInitialized) return true; // Try to initialize the version safe API m_bInitialized = (SteamAPI_InitSafe() && m_ctx.Init()); if (!m_bInitialized) { SteamAPI_Shutdown(); m_ctx.Clear(); return false; } m_iAppID = m_ctx.SteamUtils()->GetAppID(); RequestStats(); return true; }
//----------------------------------------------------------------------------- // Purpose: Initialization //----------------------------------------------------------------------------- void CGameUI::Initialize( CreateInterfaceFn factory ) { MEM_ALLOC_CREDIT(); ConnectTier1Libraries( &factory, 1 ); ConnectTier2Libraries( &factory, 1 ); ConVar_Register( FCVAR_CLIENTDLL ); ConnectTier3Libraries( &factory, 1 ); enginesound = (IEngineSound *)factory(IENGINESOUND_CLIENT_INTERFACE_VERSION, NULL); engine = (IVEngineClient *)factory( VENGINE_CLIENT_INTERFACE_VERSION, NULL ); bik = (IBik*)factory( BIK_INTERFACE_VERSION, NULL ); #ifndef _X360 SteamAPI_InitSafe(); steamapicontext->Init(); #endif CGameUIConVarRef var( "gameui_xbox" ); m_bIsConsoleUI = var.IsValid() && var.GetBool(); vgui::VGui_InitInterfacesList( "GameUI", &factory, 1 ); vgui::VGui_InitMatSysInterfacesList( "GameUI", &factory, 1 ); // load localization file g_pVGuiLocalize->AddFile( "Resource/gameui_%language%.txt", "GAME", true ); // load mod info ModInfo().LoadCurrentGameInfo(); // load localization file for kb_act.lst g_pVGuiLocalize->AddFile( "Resource/valve_%language%.txt", "GAME", true ); bool bFailed = false; enginevguifuncs = (IEngineVGui *)factory( VENGINE_VGUI_VERSION, NULL ); enginesurfacefuncs = (vgui::ISurface *)factory(VGUI_SURFACE_INTERFACE_VERSION, NULL); gameuifuncs = (IGameUIFuncs *)factory( VENGINE_GAMEUIFUNCS_VERSION, NULL ); xboxsystem = (IXboxSystem *)factory( XBOXSYSTEM_INTERFACE_VERSION, NULL ); #ifdef _X360 xonline = (IXOnline *)factory( XONLINE_INTERFACE_VERSION, NULL ); #endif #ifdef SWARM_DLL g_pMatchExtSwarm = ( IMatchExtSwarm * ) factory( IMATCHEXT_SWARM_INTERFACE, NULL ); #endif #ifdef SDK_DLL g_pMatchExtSwarm = ( IMatchExtSwarm * ) factory( IMATCHEXT_SWARM_INTERFACE, NULL ); #endif bFailed = !enginesurfacefuncs || !gameuifuncs || !enginevguifuncs || !xboxsystem || #ifdef _X360 !xonline || #endif #ifdef SWARM_DLL !g_pMatchExtSwarm || #endif #ifdef SDK_DLL !g_pMatchExtSwarm || #endif !g_pMatchFramework; if ( bFailed ) { Error( "CGameUI::Initialize() failed to get necessary interfaces\n" ); } // setup base panel UI_BASEMOD_PANEL_CLASS& factoryBasePanel = ConstructUiBaseModPanelClass(); // explicit singleton instantiation factoryBasePanel.SetBounds( 0, 0, 640, 480 ); factoryBasePanel.SetPaintBorderEnabled( false ); factoryBasePanel.SetPaintBackgroundEnabled( true ); factoryBasePanel.SetPaintEnabled( true ); factoryBasePanel.SetVisible( true ); factoryBasePanel.SetMouseInputEnabled( IsPC() ); // factoryBasePanel.SetKeyBoardInputEnabled( IsPC() ); factoryBasePanel.SetKeyBoardInputEnabled( true ); vgui::VPANEL rootpanel = enginevguifuncs->GetPanel( PANEL_GAMEUIDLL ); factoryBasePanel.SetParent( rootpanel ); }