976 lines
31 KiB
Ucode
976 lines
31 KiB
Ucode
class KFTab_DetailSettings extends UT2K4Tab_DetailSettings;
|
|
|
|
var automated moComboBox co_GlobalDetails;
|
|
var automated moComboBox co_ScopeDetail;
|
|
|
|
var automated moCheckbox ch_HDR;
|
|
var automated moCheckbox ch_Advanced;
|
|
var automated moCheckbox ch_MotionBlur;
|
|
var automated moCheckbox ch_VSync;
|
|
var automated moCheckbox ch_TripBuff;
|
|
var automated moCheckbox ch_WideScreen;
|
|
|
|
var() noexport transient int iGlobalDetails, iScopeDetail,
|
|
iGlobalDetailsD, iScopeDetailD;
|
|
|
|
var() noexport transient bool bMotionBlur, bMotionBlurD,
|
|
bHDR, bHDRD,
|
|
bVSync, bVSyncD,
|
|
bTripBuff, bTripBuffD,
|
|
bWideScreen, bWideScreenD;
|
|
|
|
const MAX_DETAIL_OPTIONS = 7;
|
|
var() localized string DetailOptions[MAX_DETAIL_OPTIONS];
|
|
var() localized string ScopeLevels[3];
|
|
|
|
var bool bShowPerfWarning; // Used to disable performance warnings
|
|
|
|
function bool InternalOnPreDraw(canvas Canvas)
|
|
{
|
|
local bool result;
|
|
|
|
result = super.OnPreDraw(canvas);
|
|
|
|
if (iGlobalDetails == -1) // We need to pick default settings
|
|
{
|
|
iGlobalDetails = 3;
|
|
co_GlobalDetails.SilentSetIndex(3);
|
|
UpdateGlobalDetails();
|
|
}
|
|
else
|
|
UpdateGlobalDetailsVisibility();
|
|
|
|
return result;
|
|
}
|
|
|
|
function InitComponent(GUIController MyController, GUIComponent MyOwner)
|
|
{
|
|
Super.InitComponent(MyController, MyOwner);
|
|
|
|
RemoveComponent(sl_DistanceLOD);
|
|
}
|
|
|
|
function SetupPositions()
|
|
{
|
|
sb_Section1.ManageComponent(co_RenderDevice);
|
|
sb_Section1.ManageComponent(co_Resolution);
|
|
sb_Section1.ManageComponent(co_ColorDepth);
|
|
sb_Section1.ManageComponent(ch_Fullscreen);
|
|
sb_Section1.ManageComponent(ch_WideScreen);
|
|
sb_Section1.ManageComponent(ch_VSync);
|
|
sb_Section1.ManageComponent(ch_TripBuff);
|
|
sb_Section1.ManageComponent(sl_Gamma);
|
|
sb_Section1.ManageComponent(sl_Brightness);
|
|
sb_Section1.ManageComponent(sl_Contrast);
|
|
sb_Section1.ManageComponent(co_GlobalDetails);
|
|
sb_Section1.ManageComponent(ch_Advanced);
|
|
|
|
sb_Section2.Managecomponent(co_Texture);
|
|
sb_Section2.ManageComponent(co_Char);
|
|
sb_Section2.ManageComponent(co_World);
|
|
sb_Section2.ManageComponent(co_Physics);
|
|
sb_Section2.ManageComponent(co_Decal);
|
|
sb_Section2.ManageComponent(co_Shadows);
|
|
sb_Section2.ManageComponent(co_MeshLOD);
|
|
sb_Section2.ManageComponent(co_MultiSamples);
|
|
sb_Section2.ManageComponent(co_Anisotropy);
|
|
sb_Section2.ManageComponent(ch_ForceFSAAScreenshotSupport);
|
|
sb_Section2.ManageComponent(ch_Decals);
|
|
sb_Section2.ManageComponent(ch_DynLight);
|
|
sb_Section2.ManageComponent(ch_Coronas);
|
|
sb_Section2.ManageComponent(ch_Textures);
|
|
sb_Section2.ManageComponent(ch_Projectors);
|
|
sb_Section2.ManageComponent(ch_DecoLayers);
|
|
sb_Section2.ManageComponent(ch_Trilinear);
|
|
sb_Section2.ManageComponent(ch_Weather);
|
|
sb_Section2.ManageComponent(co_ScopeDetail);
|
|
sb_Section2.ManageComponent(ch_MotionBlur);
|
|
sb_Section2.Managecomponent(ch_HDR);
|
|
|
|
sb_Section3.ManageComponent(i_GammaBar);
|
|
}
|
|
|
|
function InitializeCombos()
|
|
{
|
|
local int i;
|
|
local array<GUIListElem> Options;
|
|
|
|
for (i = 0; i < Components.Length; i++)
|
|
{
|
|
if (moComboBox(Components[i]) != None)
|
|
{
|
|
MyGetComboOptions( moComboBox(Components[i]), Options );
|
|
moComboBox(Components[i]).MyComboBox.List.Elements = Options;
|
|
moComboBox(Components[i]).MyComboBox.List.ItemCount = Options.Length;
|
|
moComboBox(Components[i]).ReadOnly(True);
|
|
}
|
|
}
|
|
}
|
|
|
|
function MyGetComboOptions(moComboBox Combo, out array<GUIListElem> Ar)
|
|
{
|
|
local int i;
|
|
//local string tempStr;
|
|
|
|
Ar.Remove(0, Ar.Length);
|
|
if (Combo == None)
|
|
return;
|
|
|
|
switch (Combo)
|
|
{
|
|
case co_GlobalDetails:
|
|
for (i = 0; i < ArrayCount(DetailOptions); i++)
|
|
{
|
|
Ar.Length = Ar.Length + 1;
|
|
Ar[i].Item = DetailOptions[i];
|
|
}
|
|
break;
|
|
|
|
case co_ScopeDetail:
|
|
for (i = 0; i < ArrayCount(ScopeLevels); i++)
|
|
{
|
|
Ar.Length = Ar.Length + 1;
|
|
Ar[i].Item = ScopeLevels[i];
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (Ar.length == 0)
|
|
GetComboOptions(Combo, Ar);
|
|
}
|
|
|
|
function InternalOnLoadINI(GUIComponent Sender, string s)
|
|
{
|
|
local bool a, b;
|
|
local PlayerController PC;
|
|
local string tempStr;
|
|
|
|
PC = PlayerOwner();
|
|
switch (Sender)
|
|
{
|
|
case co_GlobalDetails:
|
|
iGlobalDetails = class'ROPlayer'.default.GlobalDetailLevel;
|
|
iGlobalDetailsD = iGlobalDetails;
|
|
co_GlobalDetails.SilentSetIndex(iGlobalDetails);
|
|
ch_Advanced.SetComponentValue(iGlobalDetailsD == MAX_DETAIL_OPTIONS, true);
|
|
break;
|
|
|
|
case co_ScopeDetail:
|
|
switch (class'KFWeapon'.default.KFScopeDetail)
|
|
{
|
|
case KF_ModelScope:
|
|
iScopeDetail = 0;
|
|
break;
|
|
|
|
case KF_TextureScope:
|
|
iScopeDetail = 1;
|
|
break;
|
|
|
|
case KF_ModelScopeHigh:
|
|
iScopeDetail = 2;
|
|
break;
|
|
|
|
default:
|
|
iScopeDetail = -1;
|
|
}
|
|
|
|
iScopeDetailD = iScopeDetail;
|
|
if (iScopeDetail < 0)
|
|
co_ScopeDetail.SilentSetIndex(0);
|
|
else
|
|
co_ScopeDetail.SilentSetIndex(iScopeDetail);
|
|
break;
|
|
|
|
case ch_MotionBlur:
|
|
bMotionBlur = bool(PC.ConsoleCommand("get KFMod.KFHumanPawn bUseBlurEffect"));
|
|
bMotionBlurD = bMotionBlur;
|
|
ch_MotionBlur.SetComponentValue(bMotionBlur,true);
|
|
break;
|
|
|
|
case ch_HDR:
|
|
bHDR = bool(PC.ConsoleCommand("get ini:Engine.Engine.ViewportManager Bloom"));
|
|
bHDRD = bHDR;
|
|
ch_HDR.SetComponentValue(bHDR,true);
|
|
break;
|
|
|
|
case ch_Advanced:
|
|
break; // value is set by co_GlobalDetails
|
|
|
|
case co_Shadows:
|
|
tempStr = GetNativeClassName("Engine.Engine.RenderDevice");
|
|
|
|
// No render-to-texture on anything but Direct3D (or OpenGL!).
|
|
if ((tempStr == "D3DDrv.D3DRenderDevice") ||
|
|
(tempStr == "D3D9Drv.D3D9RenderDevice") ||
|
|
(tempStr == "OpenGLDrv.OpenGLRenderDevice"))
|
|
{
|
|
a = bool(PC.ConsoleCommand("get UnrealGame.UnrealPawn bPlayerShadows"));
|
|
b = bool(PC.ConsoleCommand("get UnrealGame.UnrealPawn bBlobShadow"));
|
|
|
|
if ( b )
|
|
iShadow = 1;
|
|
else if (a)
|
|
iShadow = 2;
|
|
else
|
|
iShadow = 0;
|
|
}
|
|
else
|
|
{
|
|
b = bool(PC.ConsoleCommand("get UnrealGame.UnrealPawn bBlobShadow"));
|
|
if ( b )
|
|
iShadow = 1;
|
|
else
|
|
iShadow = 0;
|
|
}
|
|
|
|
iShadowD = iShadow;
|
|
co_Shadows.SilentSetIndex(iShadow);
|
|
break;
|
|
|
|
case ch_VSync:
|
|
bVSync = bool(PC.ConsoleCommand("get ini:Engine.Engine.RenderDevice UseVSync"));
|
|
bVSyncD = bVSync;
|
|
ch_VSync.SetComponentValue(bVSync, true);
|
|
break;
|
|
|
|
case ch_TripBuff:
|
|
bTripBuff = bool(PC.ConsoleCommand("get ini:Engine.Engine.RenderDevice UseTripleBuffering"));
|
|
bTripBuffD = bTripBuff;
|
|
ch_TripBuff.SetComponentValue(bTripBuff, true);
|
|
break;
|
|
|
|
case ch_WideScreen:
|
|
bWideScreen = bool(PC.ConsoleCommand("get kfmod.KFPlayerController bUseTrueWideScreenFOV"));
|
|
bWideScreenD = bWideScreen;
|
|
ch_WideScreen.SetComponentValue(bWideScreen, true);
|
|
break;
|
|
|
|
default:
|
|
super.InternalOnLoadINI(sender, s);
|
|
}
|
|
|
|
// Post-super checks
|
|
switch (Sender)
|
|
{
|
|
case co_RenderDevice:
|
|
DisableHDRControlIfNeeded();
|
|
|
|
// Disable control if card doesn't support hdr
|
|
if (PlayerOwner() != none)
|
|
if (!PlayerOwner().PostFX_IsBloomCapable())
|
|
ch_HDR.DisableMe();
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
function InternalOnChange(GUIComponent Sender)
|
|
{
|
|
local bool bGoingUp;
|
|
local int i;
|
|
|
|
Super.InternalOnChange(Sender);
|
|
|
|
if ( bIgnoreChange )
|
|
return;
|
|
|
|
switch (Sender)
|
|
{
|
|
// These changes are saved together on SaveSettings
|
|
case co_GlobalDetails:
|
|
i = co_GlobalDetails.GetIndex();
|
|
bGoingUp = i > iGlobalDetails && i != iGlobalDetailsD && (i != MAX_DETAIL_OPTIONS - 1);
|
|
iGlobalDetails = i;
|
|
//ch_Advanced.SetComponentValue(i == MAX_DETAIL_OPTIONS, true);
|
|
UpdateGlobalDetails();
|
|
break;
|
|
|
|
case co_ScopeDetail:
|
|
i = co_ScopeDetail.GetIndex();
|
|
bGoingUp = i > iScopeDetail && i != iScopeDetailD;
|
|
iScopeDetail = i;
|
|
break;
|
|
|
|
case ch_MotionBlur:
|
|
bMotionBlur = ch_MotionBlur.IsChecked();
|
|
bGoingUp = bMotionBlur && bMotionBlur != bMotionBlurD;
|
|
break;
|
|
|
|
case ch_HDR:
|
|
bHDR = ch_HDR.IsChecked();
|
|
bGoingUp = bHDR && bHDR != bHDRD;
|
|
break;
|
|
|
|
case ch_Advanced:
|
|
if (ch_Advanced.IsChecked())
|
|
{
|
|
iGlobalDetails = MAX_DETAIL_OPTIONS - 1;
|
|
co_GlobalDetails.SilentSetIndex(iGlobalDetails);
|
|
}
|
|
UpdateGlobalDetailsVisibility();
|
|
break;
|
|
|
|
case ch_VSync:
|
|
bVSync = ch_VSync.IsChecked();
|
|
break;
|
|
|
|
case ch_TripBuff:
|
|
bTripBuff = ch_TripBuff.IsChecked();
|
|
break;
|
|
|
|
case ch_WideScreen:
|
|
bWideScreen = ch_WideScreen.IsChecked();
|
|
break;
|
|
}
|
|
|
|
if (bGoingUp)
|
|
ShowPerformanceWarning();
|
|
}
|
|
|
|
function ShowPerformanceWarning(optional float Seconds)
|
|
{
|
|
if (bShowPerfWarning)
|
|
super.ShowPerformanceWarning(Seconds);
|
|
}
|
|
|
|
function UpdateGlobalDetails()
|
|
{
|
|
local PlayerController PC;
|
|
PC = PlayerOwner();
|
|
|
|
UpdateGlobalDetailsVisibility();
|
|
|
|
if ( iGlobalDetails == MAX_DETAIL_OPTIONS - 1 )
|
|
return; // do not change settings if we picked custom
|
|
|
|
bShowPerfWarning = false;
|
|
|
|
switch (iGlobalDetails)
|
|
{
|
|
case 0: // Lowest
|
|
co_Texture.SetIndex(0); // Range = 0 - 8
|
|
co_Char.SetIndex(0); // Range = 0 - 8
|
|
co_World.SetIndex(0); // Range = 0 - 2
|
|
co_ScopeDetail.SetIndex(1); // Range = 0 - 2 , 1 being lowest
|
|
co_Physics.setindex(0); // Range = 0 - 2
|
|
co_Decal.setindex(0); // Range = 0 - 2
|
|
co_Shadows.setindex(0); // Range = 0 - 2 (0 - 1 sometimes -- check that!)
|
|
co_MeshLOD.setindex(0); // Range = 0 - 3
|
|
co_MultiSamples.setindex(0);
|
|
co_Anisotropy.setindex(0);
|
|
ch_ForceFSAAScreenshotSupport.SetComponentValue(false,false);
|
|
ch_Decals.SetComponentValue(false, false);
|
|
ch_DynLight.SetComponentValue(false, false);
|
|
ch_Coronas.SetComponentValue(false, false);
|
|
ch_Textures.SetComponentValue(false, false);
|
|
ch_Projectors.SetComponentValue(false, false);
|
|
ch_DecoLayers.SetComponentValue(false, false);
|
|
ch_Trilinear.SetComponentValue(false, false);
|
|
ch_Weather.SetComponentValue(false, false);
|
|
ch_DecoLayers.SetComponentValue(false, false);
|
|
ch_MotionBlur.SetComponentValue(false, false);
|
|
ch_HDR.SetComponentValue(false, false);
|
|
break;
|
|
|
|
case 1: // Low
|
|
co_Texture.SetIndex(3); // Range = 0 - 8
|
|
co_Char.SetIndex(3); // Range = 0 - 8
|
|
co_World.SetIndex(0); // Range = 0 - 2
|
|
co_ScopeDetail.SetIndex(1); // Range = 0 - 2 , 1 being lowest
|
|
co_Physics.setindex(0); // Range = 0 - 2
|
|
co_Decal.setindex(1); // Range = 0 - 2
|
|
co_Shadows.setindex(1); // Range = 0 - 2 (0 - 1 sometimes -- check that!)
|
|
co_MeshLOD.setindex(1); // Range = 0 - 3
|
|
co_MultiSamples.setindex(0);
|
|
|
|
if (AnisotropyModes.Length>1)
|
|
co_Anisotropy.SetIndex(1);
|
|
else
|
|
co_Anisotropy.setindex(0);
|
|
|
|
ch_ForceFSAAScreenshotSupport.SetComponentValue(false,false);
|
|
ch_Decals.SetComponentValue(true, false);
|
|
ch_DynLight.SetComponentValue(false, false);
|
|
ch_Coronas.SetComponentValue(true, false);
|
|
ch_Textures.SetComponentValue(false, false);
|
|
ch_Projectors.SetComponentValue(true, false);
|
|
ch_DecoLayers.SetComponentValue(true, false);
|
|
ch_Trilinear.SetComponentValue(false, false);
|
|
ch_Weather.SetComponentValue(true, false);
|
|
ch_MotionBlur.SetComponentValue(true, false);
|
|
ch_HDR.SetComponentValue(false, false);
|
|
break;
|
|
|
|
case 2: // Medium
|
|
co_Texture.SetIndex(5); // Range = 0 - 8
|
|
co_Char.SetIndex(5); // Range = 0 - 8
|
|
co_World.SetIndex(1); // Range = 0 - 2
|
|
co_ScopeDetail.SetIndex(1); // Range = 0 - 2 , 1 being lowest
|
|
co_Physics.setindex(1); // Range = 0 - 2
|
|
co_Decal.setindex(1); // Range = 0 - 2
|
|
co_Shadows.setindex(1); // Range = 0 - 2 (0 - 1 sometimes -- check that!)
|
|
co_MeshLOD.setindex(2); // Range = 0 - 3
|
|
co_MultiSamples.setindex(0);
|
|
|
|
if (AnisotropyModes.Length>2)
|
|
co_Anisotropy.setindex(2);
|
|
else if (AnisotropyModes.Length>1)
|
|
co_Anisotropy.SetIndex(1);
|
|
else
|
|
co_Anisotropy.setindex(0);
|
|
|
|
ch_ForceFSAAScreenshotSupport.SetComponentValue(false,false);
|
|
ch_Decals.SetComponentValue(true, false);
|
|
ch_DynLight.SetComponentValue(true, false);
|
|
ch_Coronas.SetComponentValue(true, false);
|
|
ch_Textures.SetComponentValue(true, false);
|
|
ch_Projectors.SetComponentValue(true, false);
|
|
ch_DecoLayers.SetComponentValue(true, false);
|
|
ch_Trilinear.SetComponentValue(false, false);
|
|
ch_Weather.SetComponentValue(true, false);
|
|
ch_MotionBlur.SetComponentValue(true, false);
|
|
ch_HDR.SetComponentValue(false, false);
|
|
break;
|
|
|
|
case 3: // High
|
|
co_Texture.SetIndex(6); // Range = 0 - 8
|
|
co_Char.SetIndex(6); // Range = 0 - 8
|
|
co_World.SetIndex(2); // Range = 0 - 2
|
|
co_ScopeDetail.SetIndex(0); // Range = 0 - 2 , 1 being lowest
|
|
co_Physics.setindex(1); // Range = 0 - 2
|
|
co_Decal.setindex(2); // Range = 0 - 2
|
|
co_Shadows.setindex(1); // Range = 0 - 2 (0 - 1 sometimes -- check that!)
|
|
co_MeshLOD.setindex(2); // Range = 0 - 3
|
|
co_MultiSamples.setindex(0);
|
|
|
|
if (MultiSampleModes.Length>1)
|
|
co_MultiSamples.setindex(1);
|
|
else
|
|
co_MultiSamples.setindex(0);
|
|
|
|
if(AnisotropyModes.Length>3)
|
|
co_Anisotropy.setindex(3);
|
|
else if (AnisotropyModes.Length>2)
|
|
co_Anisotropy.setindex(2);
|
|
else if (AnisotropyModes.Length>1)
|
|
co_Anisotropy.SetIndex(1);
|
|
else
|
|
co_Anisotropy.setindex(0);
|
|
|
|
ch_ForceFSAAScreenshotSupport.SetComponentValue(false,false);
|
|
ch_Decals.SetComponentValue(true, false);
|
|
ch_DynLight.SetComponentValue(true, false);
|
|
ch_Coronas.SetComponentValue(true, false);
|
|
ch_Textures.SetComponentValue(true, false);
|
|
ch_Projectors.SetComponentValue(true, false);
|
|
ch_DecoLayers.SetComponentValue(true, false);
|
|
ch_Trilinear.SetComponentValue(false, false);
|
|
ch_Weather.SetComponentValue(true, false);
|
|
ch_MotionBlur.SetComponentValue(true, false);
|
|
ch_HDR.SetComponentValue(true, false);
|
|
break;
|
|
|
|
case 4: // Higher
|
|
co_Texture.SetIndex(7); // Range = 0 - 8
|
|
co_Char.SetIndex(7); // Range = 0 - 8
|
|
co_World.SetIndex(2); // Range = 0 - 2
|
|
co_ScopeDetail.SetIndex(2); // Range = 0 - 2 , 1 being lowest
|
|
co_Physics.setindex(1); // Range = 0 - 2
|
|
co_Decal.setindex(2); // Range = 0 - 2
|
|
co_Shadows.setindex(min(co_Shadows.ItemCount() - 1, 3)); // Range = 0 - 2 (0 - 1 sometimes -- check that!)
|
|
co_MeshLOD.setindex(2); // Range = 0 - 3
|
|
|
|
if(MultiSampleModes.Length>2)
|
|
co_MultiSamples.setindex(2);
|
|
else if (MultiSampleModes.Length>1)
|
|
co_MultiSamples.setindex(1);
|
|
else
|
|
co_MultiSamples.setindex(0);
|
|
|
|
if(AnisotropyModes.Length>3)
|
|
co_Anisotropy.setindex(3);
|
|
else if (AnisotropyModes.Length>2)
|
|
co_Anisotropy.SetIndex(2);
|
|
else if (AnisotropyModes.Length>1)
|
|
co_Anisotropy.SetIndex(1);
|
|
else
|
|
co_Anisotropy.setindex(0);
|
|
|
|
ch_ForceFSAAScreenshotSupport.SetComponentValue(false,false);
|
|
ch_Decals.SetComponentValue(true, false);
|
|
ch_DynLight.SetComponentValue(true, false);
|
|
ch_Coronas.SetComponentValue(true, false);
|
|
ch_Textures.SetComponentValue(true, false);
|
|
ch_Projectors.SetComponentValue(true, false);
|
|
ch_DecoLayers.SetComponentValue(true, false);
|
|
ch_Trilinear.SetComponentValue(false, false);
|
|
ch_Weather.SetComponentValue(true, false);
|
|
ch_MotionBlur.SetComponentValue(true, false);
|
|
ch_HDR.SetComponentValue(true, false);
|
|
break;
|
|
|
|
case 5: // Highest
|
|
co_Texture.SetIndex(8); // Range = 0 - 8
|
|
co_Char.SetIndex(8); // Range = 0 - 8
|
|
co_World.SetIndex(2); // Range = 0 - 2
|
|
co_ScopeDetail.SetIndex(2); // Range = 0 - 2 , 1 being lowest
|
|
co_Physics.setindex(2); // Range = 0 - 2
|
|
co_Decal.setindex(2); // Range = 0 - 2
|
|
co_Shadows.setindex(min(co_Shadows.ItemCount() - 1, 3)); // Range = 0 - 2 (0 - 1 sometimes -- check that!)
|
|
co_MeshLOD.setindex(3); // Range = 0 - 3
|
|
|
|
if(
|
|
(
|
|
(true==bool(PC.ConsoleCommand("ISNVIDIAGPU")))
|
|
&& (false==bool(PC.ConsoleCommand("SUPPORTEDMULTISAMPLE 4"))
|
|
)
|
|
|| (false==bool(PC.ConsoleCommand("ISNVIDIAGPU"))))
|
|
&& (MultiSampleModes.Length>3)
|
|
)
|
|
co_MultiSamples.setindex(3);
|
|
else if(MultiSampleModes.Length>2)
|
|
co_MultiSamples.setindex(2);
|
|
else if (MultiSampleModes.Length>1)
|
|
co_MultiSamples.setindex(1);
|
|
else
|
|
co_MultiSamples.setindex(0);
|
|
|
|
co_Anisotropy.setindex(AnisotropyModes.Length-1);
|
|
ch_ForceFSAAScreenshotSupport.SetComponentValue(false,false);
|
|
ch_Decals.SetComponentValue(true, false);
|
|
ch_DynLight.SetComponentValue(true, false);
|
|
ch_Coronas.SetComponentValue(true, false);
|
|
ch_Textures.SetComponentValue(true, false);
|
|
ch_Projectors.SetComponentValue(true, false);
|
|
ch_DecoLayers.SetComponentValue(true, false);
|
|
ch_Trilinear.SetComponentValue(true, false);
|
|
ch_Weather.SetComponentValue(true, false);
|
|
ch_MotionBlur.SetComponentValue(true, false);
|
|
ch_HDR.SetComponentValue(true, false);
|
|
break;
|
|
}
|
|
|
|
bShowPerfWarning = true;
|
|
|
|
}
|
|
|
|
function UpdateGlobalDetailsVisibility()
|
|
{
|
|
if (iGlobalDetails == MAX_DETAIL_OPTIONS - 1 || ch_Advanced.IsChecked()) // custom
|
|
{
|
|
//sb_Section2.SetVisibility(true);
|
|
/*sb_Section1.WinLeft = SavedContainer1Pos;
|
|
sb_Section2.WinLeft = SavedContainer2Pos;
|
|
sb_Section3.WinLeft = SavedContainer3Pos;*/
|
|
sb_Section2.EnableMe();
|
|
DisableHDRControlIfNeeded();
|
|
|
|
// wtf m8 _RO_
|
|
if ((co_RenderDevice.GetExtra() != "D3D9Drv.D3D9RenderDevice") &&
|
|
(co_RenderDevice.GetExtra() != "OpenGLDrv.OpenGLRenderDevice"))
|
|
{
|
|
co_MultiSamples.DisableMe();
|
|
ch_ForceFSAAScreenshotSupport.DisableMe();
|
|
}
|
|
// _RO_
|
|
|
|
//ch_Advanced.SetComponentValue(true ,true);
|
|
}
|
|
else
|
|
{
|
|
//sb_Section2.SetVisibility(false);
|
|
/*sb_Section1.WinLeft = Container1PosAlt;
|
|
sb_Section2.WinLeft = 1.0;
|
|
sb_Section3.WinLeft = Container3PosAlt;*/
|
|
sb_Section2.DisableMe();
|
|
//ch_Advanced.SetComponentValue(false ,true);
|
|
}
|
|
}
|
|
|
|
function DisableHDRControlIfNeeded()
|
|
{
|
|
// Bloom only available when using direct3d 9.0
|
|
if ((co_RenderDevice.GetExtra() != "D3D9Drv.D3D9RenderDevice") &&
|
|
(co_RenderDevice.GetExtra() != "OpenGLDrv.OpenGLRenderDevice"))
|
|
{
|
|
ch_HDR.DisableMe();
|
|
}
|
|
}
|
|
|
|
function SaveSettings()
|
|
{
|
|
local PlayerController PC;
|
|
local bool bSavePlayerConfig;
|
|
local Inventory inv;
|
|
local KFWeapon KFWeap;
|
|
local int i;
|
|
|
|
Super.SaveSettings();
|
|
|
|
PC = PlayerOwner();
|
|
|
|
if ( bVSync != bVSyncD )
|
|
{
|
|
PC.ConsoleCommand("set ini:Engine.Engine.RenderDevice UseVSync" @ bVSync);
|
|
bVSyncD = bVSync;
|
|
}
|
|
|
|
if ( bTripBuff != bTripBuffD )
|
|
{
|
|
PC.ConsoleCommand("set ini:Engine.Engine.RenderDevice UseTripleBuffering" @ bTripBuff);
|
|
bTripBuffD = bTripBuff;
|
|
}
|
|
|
|
if ( bWideScreen != bWideScreenD )
|
|
{
|
|
PC.ConsoleCommand("set kfmod.KFPlayerController bUseTrueWideScreenFOV" @ bWideScreen);
|
|
bWideScreenD = bWideScreen;
|
|
}
|
|
|
|
if (bMotionBlur != bMotionBlurD)
|
|
{
|
|
class'KFMod.KFHumanPawn'.default.bUseBlurEffect = bMotionBlur;
|
|
//bSavePlayerConfig = true;
|
|
class'KFMod.KFHumanPawn'.static.StaticSaveConfig();
|
|
|
|
if (KFHumanPawn(PC.Pawn) != none)
|
|
{
|
|
KFHumanPawn(PC.Pawn).bUseBlurEffect = bMotionBlur;
|
|
KFHumanPawn(PC.Pawn).SaveConfig();
|
|
}
|
|
|
|
bMotionBlurD = bMotionBlur;
|
|
}
|
|
|
|
if (bHDR != bHDRD)
|
|
{
|
|
PC.ConsoleCommand("set ini:Engine.Engine.ViewportManager Bloom"@bHDR);
|
|
|
|
if (PC != none)
|
|
{
|
|
PC.PostFX_SetActive(0, bHDR);
|
|
}
|
|
|
|
bHDRD = bHDR;
|
|
}
|
|
|
|
if (iScopeDetail != iScopeDetailD)
|
|
{
|
|
class'KFMod.KFWeapon'.default.KFScopeDetail = KFScopeDetailSettings(iScopeDetail);
|
|
class'KFMod.KFWeapon'.static.StaticSaveConfig();
|
|
|
|
|
|
// Initialize the FOV of all the weapons the player is carrying
|
|
if( PC.Pawn != none )
|
|
{
|
|
for ( Inv=PC.Pawn.Inventory; Inv!=None; Inv=Inv.Inventory )
|
|
{
|
|
i++;
|
|
KFWeap = KFWeapon(Inv);
|
|
if ( KFWeap != None && KFWeap.bHasScope )
|
|
{
|
|
KFWeap.KFScopeDetail = class'KFMod.KFWeapon'.default.KFScopeDetail;
|
|
KFWeap.AdjustIngameScope();
|
|
}
|
|
|
|
// Little hack to catch possible runaway loops. Gotta love those linked listed in UE2.5 - Ramm
|
|
if( i > 10000 )
|
|
break;
|
|
}
|
|
}
|
|
|
|
iScopeDetailD = iScopeDetail;
|
|
}
|
|
// KFTODO: Implement this in the KF player class
|
|
if (iGlobalDetails != iGlobalDetailsD)
|
|
{
|
|
class'ROEngine.ROPlayer'.default.GlobalDetailLevel = iGlobalDetails;
|
|
bSavePlayerConfig = true;
|
|
|
|
iGlobalDetailsD = iGlobalDetails;
|
|
}
|
|
|
|
if ( iShadow != iShadowD )
|
|
{
|
|
if ( PC.Pawn != None && UnrealPawn(PC.Pawn) != None )
|
|
{
|
|
UnrealPawn(PC.Pawn).bBlobShadow = iShadow == 1;
|
|
UnrealPawn(PC.Pawn).bPlayerShadows = iShadow > 0;
|
|
}
|
|
|
|
class'UnrealPawn'.default.bBlobShadow = iShadow == 1;
|
|
class'UnrealPawn'.default.bPlayerShadows = iShadow > 0;
|
|
iShadowD = iShadow;
|
|
|
|
if (PC.Pawn != None && UnrealPawn(PC.Pawn) != None)
|
|
UnrealPawn(PC.Pawn).SaveConfig();
|
|
else
|
|
class'UnrealPawn'.static.StaticSaveConfig();
|
|
|
|
UpdateShadows(iShadow == 1, iShadow > 0);
|
|
}
|
|
|
|
if ( class'Vehicle'.default.bVehicleShadows != (iShadow > 0) )
|
|
{
|
|
class'Vehicle'.default.bVehicleShadows = iShadow > 0;
|
|
class'Vehicle'.static.StaticSaveConfig();
|
|
UpdateVehicleShadows(iShadow > 0);
|
|
}
|
|
|
|
if (bSavePlayerConfig)
|
|
class'ROEngine.ROPlayer'.static.StaticSaveConfig();
|
|
}
|
|
|
|
simulated function UpdateShadows(bool bBlobShadow, bool bPlayerShadows)
|
|
{
|
|
local PlayerController PC;
|
|
local UnrealPawn pawn;
|
|
|
|
PC = PlayerOwner();
|
|
|
|
if (PC == none || PC.Level.NetMode == NM_DedicatedServer)
|
|
return;
|
|
|
|
foreach PC.DynamicActors(class'UnrealPawn', pawn)
|
|
{
|
|
pawn.bBlobShadow = bBlobShadow;
|
|
pawn.bPlayerShadows = bPlayerShadows;
|
|
if( KFPawn(Pawn) != none )
|
|
{
|
|
KFPawn(Pawn).UpdateShadow();
|
|
}
|
|
else if( KFMonster(Pawn) != none )
|
|
{
|
|
KFMonster(Pawn).UpdateShadow();
|
|
}
|
|
}
|
|
}
|
|
|
|
simulated function UpdateVehicleShadows(bool bVehicleShadows)
|
|
{
|
|
local PlayerController PC;
|
|
local Vehicle vehicle;
|
|
|
|
PC = PlayerOwner();
|
|
|
|
if (PC == none || PC.Level.NetMode == NM_DedicatedServer)
|
|
return;
|
|
|
|
foreach PC.DynamicActors(class'Vehicle', vehicle)
|
|
{
|
|
vehicle.bVehicleShadows = bVehicleShadows;
|
|
vehicle.UpdateShadow();
|
|
}
|
|
}
|
|
|
|
function ResetClicked()
|
|
{
|
|
class'ROEngine.ROPlayer'.static.ResetConfig("GlobalDetailLevel");
|
|
class'KFMod.KFWeapon'.static.ResetConfig("KFScopeDetail");
|
|
class'KFMod.KFHumanPawn'.static.ResetConfig("bUseBlurEffect");
|
|
|
|
Super.ResetClicked();
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
Begin Object class=GUISectionBackground Name=sbSection1
|
|
WinWidth=0.485000
|
|
WinHeight=0.540729
|
|
WinLeft=0.000948
|
|
WinTop=0.012761
|
|
Caption="Resolution"
|
|
RenderWeight=0.01
|
|
End Object
|
|
sb_Section1=sbSection1
|
|
|
|
Begin Object class=GUISectionBackground Name=sbSection3
|
|
WinWidth=0.485000
|
|
WinHeight=0.411928
|
|
WinLeft=0.000948
|
|
WinTop=0.576061
|
|
Caption="Gamma Test"
|
|
RenderWeight=0.01
|
|
bFillClient=true
|
|
End Object
|
|
sb_Section3=sbSection3
|
|
|
|
Begin Object class=moCheckBox Name=VSyncbox
|
|
WinWidth=0.300000
|
|
WinHeight=0.040000
|
|
WinLeft=0.600000
|
|
WinTop=0.479308
|
|
Caption="Vertical Sync"
|
|
INIOption="@Internal"
|
|
INIDefault="False"
|
|
OnLoadINI=InternalOnLoadINI
|
|
Hint="Syncs the frame rate to your monitor's refresh rate"
|
|
CaptionWidth=0.94
|
|
bSquare=true
|
|
ComponentJustification=TXTA_Left
|
|
TabOrder=4
|
|
OnChange=InternalOnChange
|
|
End Object
|
|
ch_VSync=VSyncbox
|
|
|
|
Begin Object class=moCheckBox Name=TripBuffbox
|
|
WinWidth=0.300000
|
|
WinHeight=0.040000
|
|
WinLeft=0.600000
|
|
WinTop=0.479308
|
|
Caption="Triple Buffering"
|
|
INIOption="@Internal"
|
|
INIDefault="False"
|
|
OnLoadINI=InternalOnLoadINI
|
|
Hint="May help framerate/smoothness if VSync is turned on"
|
|
CaptionWidth=0.94
|
|
bSquare=true
|
|
ComponentJustification=TXTA_Left
|
|
TabOrder=4
|
|
OnChange=InternalOnChange
|
|
End Object
|
|
ch_TripBuff=TripBuffbox
|
|
|
|
Begin Object class=moCheckBox Name=WideScreenbox
|
|
WinWidth=0.300000
|
|
WinHeight=0.040000
|
|
WinLeft=0.600000
|
|
WinTop=0.479308
|
|
Caption="Widescreen"
|
|
INIOption="@Internal"
|
|
INIDefault="True"
|
|
OnLoadINI=InternalOnLoadINI
|
|
Hint="Enables widescreen support"
|
|
CaptionWidth=0.94
|
|
bSquare=true
|
|
ComponentJustification=TXTA_Left
|
|
TabOrder=4
|
|
OnChange=InternalOnChange
|
|
End Object
|
|
ch_WideScreen=WideScreenbox
|
|
|
|
Begin Object class=GUIImage Name=GammaBar
|
|
Image=Texture'2K4Menus.Controls.Gamma'//Image=Texture'InterfaceArt_tex.Menu.ROGammaSet'
|
|
ImageColor=(R=255,G=255,B=255,A=255)
|
|
OnChange=InternalOnChange
|
|
ImageRenderStyle=MSTY_Normal
|
|
ImageStyle=ISTY_Scaled
|
|
End Object
|
|
i_GammaBar=GammaBar
|
|
|
|
Begin Object class=moComboBox Name=GlobalDetails
|
|
WinWidth=0.400000
|
|
WinLeft=0.550000
|
|
WinTop=0.063021
|
|
Caption="Game details"
|
|
INIOption="@Internal"
|
|
INIDefault="Higher"
|
|
OnLoadINI=InternalOnLoadINI
|
|
Hint="Changes the quality of the graphics in the game"
|
|
CaptionWidth=0.55
|
|
ComponentJustification=TXTA_Left
|
|
TabOrder=2
|
|
bHeightFromComponent=false
|
|
OnChange=InternalOnChange
|
|
End Object
|
|
co_GlobalDetails=GlobalDetails
|
|
|
|
Begin Object class=moCheckBox Name=Advanced
|
|
WinWidth=0.300000
|
|
WinHeight=0.040000
|
|
WinLeft=0.600000
|
|
WinTop=0.479308
|
|
Caption="Show Advanced Options"
|
|
INIOption="@Internal"
|
|
INIDefault="True"
|
|
OnLoadINI=InternalOnLoadINI
|
|
Hint="Enables you to configure display options more precisely"
|
|
CaptionWidth=0.94
|
|
bSquare=true
|
|
ComponentJustification=TXTA_Left
|
|
TabOrder=2
|
|
OnChange=InternalOnChange
|
|
End Object
|
|
ch_Advanced=Advanced
|
|
|
|
|
|
Begin Object class=moComboBox Name=ScopeDetail
|
|
WinWidth=0.400000
|
|
WinLeft=0.550000
|
|
WinTop=0.063021
|
|
Caption="Scope Detail"
|
|
INIOption="@Internal"
|
|
INIDefault="Model (Low)"
|
|
OnLoadINI=InternalOnLoadINI
|
|
Hint="Changes how weapon scope views should be rendered"
|
|
CaptionWidth=0.65
|
|
ComponentJustification=TXTA_Left
|
|
TabOrder=9
|
|
bHeightFromComponent=false
|
|
OnChange=InternalOnChange
|
|
End Object
|
|
co_ScopeDetail=ScopeDetail
|
|
|
|
|
|
Begin Object class=moCheckBox Name=MotionBlur
|
|
WinWidth=0.300000
|
|
WinHeight=0.040000
|
|
WinLeft=0.600000
|
|
WinTop=0.479308
|
|
Caption="Motion Blur"
|
|
INIOption="@Internal"
|
|
INIDefault="True"
|
|
OnLoadINI=InternalOnLoadINI
|
|
Hint="Enables motion blur effects"
|
|
CaptionWidth=0.94
|
|
bSquare=true
|
|
ComponentJustification=TXTA_Left
|
|
TabOrder=13
|
|
OnChange=InternalOnChange
|
|
End Object
|
|
ch_MotionBlur=MotionBlur
|
|
|
|
Begin Object class=moCheckBox Name=HDRCheckbox
|
|
WinWidth=0.300000
|
|
WinHeight=0.040000
|
|
WinLeft=0.600000
|
|
WinTop=0.479308
|
|
Caption="HDR Bloom"
|
|
INIOption="@Internal"
|
|
INIDefault="True"
|
|
OnLoadINI=InternalOnLoadINI
|
|
Hint="Enables the Bloom effect"
|
|
CaptionWidth=0.94
|
|
bSquare=true
|
|
ComponentJustification=TXTA_Left
|
|
TabOrder=13
|
|
OnChange=InternalOnChange
|
|
End Object
|
|
ch_HDR=HDRCheckbox
|
|
|
|
OnPreDraw=InternalOnPreDraw
|
|
|
|
DetailOptions(0)="Lowest"
|
|
DetailOptions(1)="Low"
|
|
DetailOptions(2)="Medium"
|
|
DetailOptions(3)="High"
|
|
DetailOptions(4)="Higher"
|
|
DetailOptions(5)="Highest"
|
|
DetailOptions(6)="Custom"
|
|
|
|
ScopeLevels(0)="Model (Low)"
|
|
ScopeLevels(1)="Textured"
|
|
ScopeLevels(2)="Model (High)"
|
|
|
|
RenderModeText(0)="Direct 3D 9.0"
|
|
RenderModeText(1)="Direct 3D"
|
|
//RenderModeText(2)="Software"
|
|
RenderModeText(2)="OpenGL"
|
|
RenderMode(0)="D3D9Drv.D3D9RenderDevice"
|
|
RenderMode(1)="D3DDrv.D3DRenderDevice"
|
|
//RenderMode(2)="PixoDrv.PixoRenderDevice"
|
|
RenderMode(2)="OpenGLDrv.OpenGLRenderDevice"
|
|
|
|
RelaunchQuestion="The graphics mode has been successfully changed. However, it will not take effect until the next time the game is started. Would you like to restart Killing Floor right now?"
|
|
}
|