Пример #1
0
bool gkGameFramework::InitGame(const TCHAR* dllname)
{
	gkLogMessage(_T("load Game..."));
	// ensure destroyed
	DestroyGameImmediate();

#ifndef _STATIC_LIB
	// check the dll name
	TCHAR name[MAX_PATH];

	gkIniParser startupFile( _T("config/startup.cfg") );

	startupFile.Parse();

	gkStdString ret = startupFile.FetchValue(  _T("launcher"), _T("gamedll") );

	if(ret != _T(""))
	{
		_tcscpy(name, ret.c_str());
	}
	else
	{
		_tcscpy(name, _T("TestCases"));
	}

	gkLogMessage(_T("load Game: %s"), name);

	gkStdString dllPath = gEnv->rootPath;
	dllPath += "\\bin64\\";
	// create system.dll first
	gkOpenModule( m_hHandleGame, name, dllPath.c_str());

	if (m_hHandleGame)
	{
		m_pFuncGameStart = (GET_GAMEDLL)DLL_GETSYM(m_hHandleGame, "gkModuleInitialize");
		m_pFuncGameEnd = (DESTROY_GAMEDLL)DLL_GETSYM(m_hHandleGame, "gkModuleUnload");


		m_pGame = m_pFuncGameStart(gEnv);
		m_pGame->OnInit();
	}
	else
	{
		gkLogWarning(_T("gkFramework::Load GameDll %s failed."), name );
	}
#else
    m_pGame = gkLoadStaticModule_gkGame(gEnv);
    m_pGame->OnInit();
#endif

	return true;
}
Пример #2
0
//--------------------------------------------------------------------------------------
// Initialize everything and go into a render loop
//--------------------------------------------------------------------------------------
INT WINAPI wWinMain( HINSTANCE, HINSTANCE, LPWSTR, int )
{
	// Enable run-time memory check for debug builds.
#if (defined(DEBUG) || defined(_DEBUG)) && defined( OS_WIN32 )
	_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif

#ifdef _STATIC_LIB
	IGameFramework* game = gkLoadStaticModule_gkGameFramework();
#else
	// load gkSystem dll
	HINSTANCE hHandle = 0;
	gkOpenModule(hHandle, _T("gkGameFramework"));//, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
	GET_SYSTEM pFuncStart = (GET_SYSTEM)DLL_GETSYM(hHandle, "gkModuleInitialize");
	IGameFramework* game = pFuncStart();
#endif

	int width = 1280;
	int height = 720;

	// init
	ISystemInitInfo sii;
	sii.fWidth = width;
	sii.fHeight = height;

	if (!(game->Init(sii)))
	{
		return 0;
	}


	game->PostInit( NULL, sii );

	game->InitGame( NULL );

	// run
	game->Run();

	// destroy
	game->DestroyGame(false);
	game->Destroy();

	// free
#ifdef _STATIC_LIB
	gkFreeStaticModule_gkGameFramework();
#else
	gkFreeModule( hHandle );
#endif
	return 0;
}