示例#1
0
// Called when the menu loses focus
void CMenuDisplay::OnFocus(DBOOL bFocus)
{
	HCONSOLEVAR	hVar;
	int curMO, oldMO;
	DBOOL bSet;

	// Set the render mode if we are losing focus
	if (!bFocus && m_pRendererCtrl && m_pResolutionCtrl)
	{
		hVar = m_pClientDE->GetConsoleVar("MipmapOffset");
		oldMO = (int)m_pClientDE->GetVarValueFloat (hVar);

		UpdateData();

		// Save the global detail setting
		SaveDetailSetting();		

		bSet = SetRenderer(m_pRendererCtrl->GetSelIndex(), m_pResolutionCtrl->GetSelIndex());

		// If we didn't switch resolutions and the mipmap offset changed, rebind textures.
		if(!bSet)
		{
			hVar = m_pClientDE->GetConsoleVar("MipmapOffset");
			curMO = (int)m_pClientDE->GetVarValueFloat (hVar);
			if(curMO != oldMO)
			{
				m_pClientDE->RunConsoleString("RebindTextures");
			}
		}
	}
	else
	{
		// The current render mode
		RMode currentMode;
		m_pClientDE->GetRenderMode(&currentMode);		

		// Set the renderer controls so that they match the currently selected renderer
		unsigned int n;
		for (n=0; n < m_rendererArray.GetSize(); n++)
		{
			unsigned int i;
			for (i=0; i < m_rendererArray[n].m_resolutionArray.GetSize(); i++)
			{
				RMode mode=GetRendererModeStruct(n, i);

				if (IsRendererEqual(&currentMode, &mode))
				{
					// Set the renderer index
					m_pRendererCtrl->SetSelIndex(n);

					// Setup the resolution control
					SetupResolutionCtrl();

					// Set the resolution index
					m_pResolutionCtrl->SetSelIndex(i);
				}
			}
		}
	}
}
示例#2
0
// Sets the renderer
DBOOL CMenuDisplay::SetRenderer(int nRendererIndex, int nResolutionIndex)
{
	// Get the new renderer structure
	RMode newMode=GetRendererModeStruct(nRendererIndex, nResolutionIndex);

	// If the current renderer is the same as the one we are changing to, then don't set the renderer!
	RMode currentMode;
	if (m_pClientDE->GetRenderMode(&currentMode) == LT_OK)
	{	
		if (IsRendererEqual(&newMode, &currentMode))
		{
			return DFALSE;
		}
	}

	// Set the renderer mode
	m_pClientDE->SetRenderMode(&newMode);

	// Set the menu resolution size
	if (newMode.m_Width < 512 || newMode.m_Height < 384)
	{
		m_pMainMenus->SetLowResolution(DTRUE);
	}
	else
	{
		m_pMainMenus->SetLowResolution(DFALSE);
	}

	// Write the renderer information to the autoexec.cfg file
	char szTemp[256];
	sprintf(szTemp, "++RenderDll %s\0", newMode.m_RenderDLL);
	m_pClientDE->RunConsoleString(szTemp);

	sprintf(szTemp, "++CardDesc %s\0", newMode.m_InternalName);
	m_pClientDE->RunConsoleString(szTemp);

	sprintf(szTemp, "++screenwidth %d\0", newMode.m_Width);
	m_pClientDE->RunConsoleString(szTemp);

	sprintf(szTemp, "++screenheight %d\0", newMode.m_Height);
	m_pClientDE->RunConsoleString(szTemp);

	sprintf(szTemp, "++screendepth %d\0", newMode.m_BitDepth);
	m_pClientDE->RunConsoleString(szTemp);

	return DTRUE;
}
// Sets the renderer
LTBOOL CFolderDisplay::SetRenderer(int nRendererIndex, int nResolutionIndex)
{
	// Get the new renderer structure
	RMode newMode=GetRendererModeStruct(nRendererIndex, nResolutionIndex);

	// If the current renderer is the same as the one we are changing to, then don't set the renderer!
	RMode currentMode;
    if (g_pLTClient->GetRenderMode(&currentMode) == LT_OK)
	{
		if (IsRendererEqual(&newMode, &currentMode))
		{
            return LTFALSE;
		}
	}

	// Set the renderer mode
    g_pInterfaceMgr->SetSwitchingRenderModes(LTTRUE);
    g_pLTClient->SetRenderMode(&newMode);
    g_pInterfaceMgr->SetSwitchingRenderModes(LTFALSE);



	// Write the renderer information to the autoexec.cfg file
	char szTemp[256];
	sprintf(szTemp, "+RenderDll %s\0", newMode.m_RenderDLL);
    g_pLTClient->RunConsoleString(szTemp);

	sprintf(szTemp, "+CardDesc %s\0", newMode.m_InternalName);
    g_pLTClient->RunConsoleString(szTemp);

	sprintf(szTemp, "+screenwidth %d\0", newMode.m_Width);
    g_pLTClient->RunConsoleString(szTemp);

	sprintf(szTemp, "+screenheight %d\0", newMode.m_Height);
    g_pLTClient->RunConsoleString(szTemp);

	sprintf(szTemp, "+bitdepth %d\0", newMode.m_BitDepth);
    g_pLTClient->RunConsoleString(szTemp);


	g_pInterfaceMgr->ScreenDimsChanged();
	g_pInterfaceMgr->InitCursor();


    return LTTRUE;
}
示例#4
0
// Called when the screen gains or focus
void CScreenDisplay::OnFocus(LTBOOL bFocus)
{
		CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile();

	if (bFocus)
	{
		m_bEscape = LTFALSE;

		pProfile->SetDisplay();

		m_bHardwareCursor = pProfile->m_bHardwareCursor;
		m_bVSync = pProfile->m_bVSync;


		float gamma = pProfile->m_fGamma;

		m_nGamma = ConvertToSlider(gamma);

		

		m_pHardwareCursor->Enable(GetConsoleInt("DisableHardwareCursor",0) == 0);

		// The current render mode
		RMode currentMode;
		g_pLTClient->GetRenderMode(&currentMode);

		// Set the renderer controls so that they match the currently selected renderer
		unsigned int i;
		for (i=0; i < m_rendererData.m_resolutionArray.GetSize(); i++)
		{
			RMode mode=GetRendererModeStruct(i);

			if (IsRendererEqual(&currentMode, &mode))
			{
				// Setup the resolution control
				SetupResolutionCtrl();

				// Set the resolution index
				m_pResolutionCtrl->SetSelIndex(i);
			}
		}
			

        UpdateData(LTFALSE);

	}
	else
	{
		UpdateData();


		if (m_bEscape)
		{

			pProfile->m_bHardwareCursor = m_bHardwareCursor;
			pProfile->m_bVSync = m_bVSync;
			pProfile->m_fGamma = ConvertToGamma(m_nGamma);
			// Set the render mode if we are losing focus
			if (m_pResolutionCtrl)
			{
				// Get the new renderer structure
				RMode newMode=GetRendererModeStruct(m_pResolutionCtrl->GetSelIndex());

				pProfile->m_nScreenWidth = newMode.m_Width;
				pProfile->m_nScreenHeight = newMode.m_Height;
				pProfile->m_nScreenDepth = newMode.m_BitDepth;
			}
	
			pProfile->ApplyDisplay();
					
			//display settings can affect performance sttings so update them here...
			g_pPerformanceMgr->GetPerformanceOptions(&pProfile->m_sPerformance);

			pProfile->Save();
				
		}




	}
	CBaseScreen::OnFocus(bFocus);
}
// Called when the folder gains or focus
void CFolderDisplay::OnFocus(LTBOOL bFocus)
{
	CGameSettings *pSettings = g_pInterfaceMgr->GetSettings();

	if (bFocus)
	{
		m_bEscape = LTFALSE;

		m_bHardwareCursor = (GetConsoleInt("HardwareCursor",0) > 0 && GetConsoleInt("DisableHardwareCursor",0) == 0);
		m_pHardwareCursor->Enable(GetConsoleInt("DisableHardwareCursor",0) == 0);

		// The current render mode
		RMode currentMode;
		g_pLTClient->GetRenderMode(&currentMode);

		// Set the renderer controls so that they match the currently selected renderer
		unsigned int n;
		for (n=0; n < m_rendererArray.GetSize(); n++)
		{
			unsigned int i;
			for (i=0; i < m_rendererArray[n].m_resolutionArray.GetSize(); i++)
			{
				RMode mode=GetRendererModeStruct(n, i);

				if (IsRendererEqual(&currentMode, &mode))
				{
					// Set the renderer index
					m_pRendererCtrl->SetSelIndex(n);

					// Setup the resolution control
					SetupResolutionCtrl();

					// Set the resolution index
					m_pResolutionCtrl->SetSelIndex(i);
				}
			}
		}
		m_bTexture32 = pSettings->GetBoolVar("32BitTextures");
	

        UpdateData(LTFALSE);
		SetSelection(1);

	}
	else
	{
		UpdateData();


		if (m_bEscape)
		{
			LTBOOL bTexture32 = pSettings->GetBoolVar("32BitTextures");

			WriteConsoleInt("HardwareCursor",(int)m_bHardwareCursor);

			pSettings->SetBoolVar("32BitTextures",m_bTexture32);


			LTBOOL bRebind = (bTexture32 != m_bTexture32);

			// Set the render mode if we are losing focus
			if (m_pRendererCtrl && m_pResolutionCtrl)
			{

				int oldMO = (int)pSettings->GetFloatVar("MipmapOffset");

				LTBOOL bSet = SetRenderer(m_pRendererCtrl->GetSelIndex(), m_pResolutionCtrl->GetSelIndex());

				// If we didn't switch resolutions and the mipmap offset changed, rebind textures.
				if(!bSet)
				{
					int curMO = (int)pSettings->GetFloatVar("MipmapOffset");
					if(curMO != oldMO)
					{
						bRebind = LTTRUE;
					}
				}
			}
			if (bRebind)
			{

                g_pLTClient->Start3D();
                g_pLTClient->StartOptimized2D();

				g_pInterfaceResMgr->DrawMessage(GetSmallFont(),IDS_REBINDING_TEXTURES);

                g_pLTClient->EndOptimized2D();
                g_pLTClient->End3D();
                g_pLTClient->FlipScreen(0);
				g_pLTClient->RunConsoleString("RebindTextures");

			}
				
		}

		if (GetConsoleInt("BitDepth",16) == 16)
			WriteConsoleInt("DrawPortals",0);
		else if ((GetConsoleInt("BitDepth",16) == 32) && (GetConsoleInt("PerformanceLevel",1) == 2))
			WriteConsoleInt("DrawPortals",1);

        g_pLTClient->WriteConfigFile("autoexec.cfg");


	}
	CBaseFolder::OnFocus(bFocus);
}
示例#6
0
// Called when the screen gains or focus
void CScreenDisplay::OnFocus(bool bFocus)
{
	CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile();
	if (bFocus)
	{
		// clear all warning flags
		m_dwFlags &= ~eFlagWarningMask;

		m_bEscape = false;

		pProfile->SetDisplay();

		m_bHardwareCursor = pProfile->m_bHardwareCursor;
		m_bVSync = pProfile->m_bVSync;
		m_bRestartRenderBetweenMaps = pProfile->m_bRestartRenderBetweenMaps;
		m_bUseTextScaling = pProfile->m_bUseTextScaling;

		float gamma = pProfile->m_fGamma;
		m_nGamma = ConvertToSlider(gamma);

		

//		m_pHardwareCursor->Enable(GetConsoleInt("DisableHardwareCursor",0) == 0);

		// The current render mode
		RMode currentMode;
		g_pLTClient->GetRenderMode(&currentMode);

		// Set the renderer controls so that they match the currently selected renderer
		unsigned int i;
		for (i=0; i < m_rendererData.m_resolutionArray.GetSize(); i++)
		{
			RMode mode=GetRendererModeStruct(i);

			if (IsRendererEqual(&currentMode, &mode))
			{
				// Setup the resolution control
				SetupResolutionCtrl();

				// Set the resolution index
				m_pResolutionCtrl->SetSelIndex(i);
			}
		}
			

        UpdateData(false);

		if( !CPerformanceMgr::Instance().ArePerformanceCapsValid() )
		{
			g_pInterfaceResMgr->DrawMessage("PerformanceMessage_DetectVideoMemory");
			CPerformanceMgr::Instance().DetectPerformanceStats( true );
		}

		UpdateResolutionColor();
		CheckResolutionMemory();
	}
	else
	{
		UpdateData();


		if (m_bEscape)
		{

			pProfile->m_bHardwareCursor = m_bHardwareCursor;
			pProfile->m_bVSync = m_bVSync;
			pProfile->m_bRestartRenderBetweenMaps = m_bRestartRenderBetweenMaps;
			pProfile->m_bUseTextScaling = m_bUseTextScaling;
			
			pProfile->m_fGamma = ConvertToGamma(m_nGamma);
			// Set the render mode if we are losing focus
			if (m_pResolutionCtrl)
			{
				// Get the new renderer structure
				RMode newMode=GetRendererModeStruct(m_pResolutionCtrl->GetSelIndex());

				pProfile->m_nScreenWidth = newMode.m_Width;
				pProfile->m_nScreenHeight = newMode.m_Height;
				pProfile->m_nScreenDepth = newMode.m_BitDepth;
			}
	
			pProfile->ApplyDisplay();

			pProfile->Save();
				
		}




	}
	CBaseScreen::OnFocus(bFocus);
}