bool CGameStartup::InitFramework(SSystemInitParams &startupParams) { #if !defined(_LIB) && !defined(PS3) m_frameworkDll = GetFrameworkDLL(startupParams.szBinariesDir); if (!m_frameworkDll) { // failed to open the framework dll CryFatalError("Failed to open the GameFramework DLL!"); return false; } IGameFramework::TEntryFunction CreateGameFramework = (IGameFramework::TEntryFunction)CryGetProcAddress(m_frameworkDll, DLL_INITFUNC_CREATEGAME ); if (!CreateGameFramework) { // the dll is not a framework dll CryFatalError("Specified GameFramework DLL is not valid!"); return false; } #endif //_LIB m_pFramework = CreateGameFramework(); if (!m_pFramework) { CryFatalError("Failed to create the GameFramework Interface!"); // failed to create the framework return false; } if (!startupParams.hWnd && !startupParams.bEditor) { m_initWindow = true; if (!InitWindow(startupParams)) { // failed to register window class CryFatalError("Failed to register CryENGINE window class!"); return false; } } #if defined(WIN32) && !defined(XENON) else if (startupParams.bBrowserMode) SubclassWindow((HWND)startupParams.hWnd, (WNDPROC)CGameStartup::WndProc); #endif // initialize the engine if (!m_pFramework->Init(startupParams)) { CryFatalError("Failed to initialize CryENGINE!"); return false; } ModuleInitISystem(m_pFramework->GetISystem(),"CryGame"); gEnv->pGameFramework = m_pFramework; return true; }
bool CGameStartup::InitFramework(SSystemInitParams& startupParams) { MEMSTAT_CONTEXT(EMemStatContextTypes::MSC_Other, 0, "Init Game Framework" ); #if !defined(_LIB) m_frameworkDll = GetFrameworkDLL(startupParams.szBinariesDir); if (!m_frameworkDll) { CryFatalError("Failed to open the GameFramework DLL!"); return false; } IGameFramework::TEntryFunction CreateGameFramework = (IGameFramework::TEntryFunction)CryGetProcAddress(m_frameworkDll, DLL_INITFUNC_CREATEGAME); if (!CreateGameFramework) { CryFatalError("Specified GameFramework DLL is not valid!"); return false; } #endif m_pFramework = CreateGameFramework(); if (!m_pFramework) { CryFatalError("Failed to create the GameFramework Interface!"); return false; } if (!m_pFramework->Init(startupParams)) { CryFatalError("Failed to initialize CryENGINE!"); return false; } ModuleInitISystem(m_pFramework->GetISystem(), GAME_NAME); #if CRY_PLATFORM_WINDOWS SetWindowLongPtr(reinterpret_cast<HWND>(gEnv->pRenderer->GetHWND()), GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this)); #endif return true; }
IGameRef CGameStartup::Reset(const char *pModName) { if (m_pMod) { m_pMod->Shutdown(); if (m_modDll) { CryFreeLibrary(m_modDll); m_modDll = 0; } } m_modDll = 0; string modPath; if (stricmp(pModName, GAME_NAME) != 0) { modPath.append("Mods\\"); modPath.append(pModName); modPath.append("\\"); string filename; filename.append("..\\"); filename.append(modPath); #ifdef WIN64 filename.append("Bin64\\"); #else filename.append("Bin32\\"); #endif filename.append(pModName); filename.append(".dll"); #if !defined(_LIB) && !defined(LINUX) && !defined(PS3) m_modDll = CryLoadLibrary(filename.c_str()); #endif } if (!m_modDll) { ModuleInitISystem(m_pFramework->GetISystem(),"CryGame"); static char pGameBuffer[sizeof(CGame)]; m_pMod = new ((void*)pGameBuffer) CGame(); } else { IGame::TEntryFunction CreateGame = (IGame::TEntryFunction)CryGetProcAddress(m_modDll, "CreateGame"); if (!CreateGame) return 0; m_pMod = CreateGame(m_pFramework); } if (m_pMod && m_pMod->Init(m_pFramework)) { return m_modRef; } return 0; }
bool CGameStartup::InitFramework(SSystemInitParams &startupParams) { MEMSTAT_CONTEXT(EMemStatContextTypes::MSC_Other, 0, "Init Game Framework" ); #if !defined(_LIB) m_frameworkDll = GetFrameworkDLL(startupParams.szBinariesDir); if (!m_frameworkDll) { // failed to open the framework dll CryFatalError("Failed to open the GameFramework DLL!"); return false; } IGameFramework::TEntryFunction CreateGameFramework = (IGameFramework::TEntryFunction)CryGetProcAddress(m_frameworkDll, DLL_INITFUNC_CREATEGAME ); if (!CreateGameFramework) { // the dll is not a framework dll CryFatalError("Specified GameFramework DLL is not valid!"); return false; } #endif //_LIB m_pFramework = CreateGameFramework(); if (!m_pFramework) { CryFatalError("Failed to create the GameFramework Interface!"); // failed to create the framework return false; } #ifdef WIN32 if (startupParams.pSystem == NULL || (!startupParams.bEditor && !gEnv->IsDedicated())) { ::ShowCursor(FALSE); // Hide the cursor during loading (it will be shown again in Run()) } #endif // initialize the engine if (!m_pFramework->Init(startupParams)) { CryFatalError("Failed to initialize CryENGINE!"); return false; } ModuleInitISystem(m_pFramework->GetISystem(),"CryGame"); #ifdef WIN32 SetWindowLongPtr(reinterpret_cast<HWND>(gEnv->pRenderer->GetHWND()), GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this)); #endif return true; }