175 lines
4.1 KiB
Ucode
175 lines
4.1 KiB
Ucode
//==============================================================================
|
|
// Base class for all settings pages
|
|
//
|
|
// Created by Ron Prestenback
|
|
// © 2003, Epic Games, Inc. All Rights Reserved
|
|
//==============================================================================
|
|
class Settings_Tabs extends UT2K4TabPanel;
|
|
|
|
//var automated GUIImage iBackground;
|
|
|
|
var GUIFooter t_Footer;
|
|
var UT2K4SettingsPage Setting;
|
|
var bool bAlwaysApply;
|
|
var bool bNeedApply;
|
|
var globalconfig bool bExpert;
|
|
|
|
var string PerformanceWarningMenu;
|
|
var localized string PerformanceWarningText;
|
|
var float WarningCounter, WarningLength;
|
|
|
|
function InitComponent(GUIController MyController, GUIComponent MyOwner)
|
|
{
|
|
if ( UT2K4SettingsPage(MyOwner.MenuOwner) != None )
|
|
{
|
|
Setting = UT2K4SettingsPage(MyOwner.MenuOwner);
|
|
bAlwaysApply = bAlwaysApply && Setting.bApplyImmediately;
|
|
t_Footer = Setting.t_Footer;
|
|
}
|
|
|
|
Super.InitComponent(MyController, MyOwner);
|
|
}
|
|
|
|
// To catch any weirdness
|
|
event Opened(GUIComponent Sender)
|
|
{
|
|
if ( (Setting == None || t_Footer == None) && UT2K4SettingsPage(Sender) != None )
|
|
{
|
|
Setting = UT2K4SettingsPage(Sender);
|
|
bAlwaysApply = bAlwaysApply && Setting.bApplyImmediately;
|
|
t_Footer = Setting.t_Footer;
|
|
}
|
|
|
|
Super.Opened(Sender);
|
|
}
|
|
|
|
function ShowPanel(bool bShow)
|
|
{
|
|
Super.ShowPanel(bShow);
|
|
|
|
if (bShow)
|
|
{
|
|
if ( Setting.b_Apply != None )
|
|
{
|
|
if ( bAlwaysApply )
|
|
{
|
|
DisableComponent(Setting.b_Apply);
|
|
Setting.b_Apply.Hide();
|
|
Setting.GetSizingButton();
|
|
}
|
|
|
|
else
|
|
{
|
|
Setting.b_Apply.Show();
|
|
Setting.GetSizingButton();
|
|
|
|
if (bNeedApply)
|
|
EnableComponent(Setting.b_Apply);
|
|
else DisableComponent(Setting.b_Apply);
|
|
}
|
|
}
|
|
|
|
Setting.t_Header.SetCaption(Setting.PageCaption @ "|" @ PanelCaption);
|
|
}
|
|
|
|
else if (!bAlwaysApply)
|
|
{
|
|
if (Setting.b_Apply.MenuState != MSAT_Disabled)
|
|
bNeedApply = True;
|
|
else bNeedApply = False;
|
|
}
|
|
}
|
|
|
|
function AcceptClicked()
|
|
{
|
|
if (!bAlwaysApply)
|
|
DisableComponent(Setting.b_Apply);
|
|
|
|
SaveSettings();
|
|
}
|
|
|
|
event Closed(GUIComponent Sender, bool bCancelled)
|
|
{
|
|
Super.Closed(Sender, bCancelled);
|
|
if ( bAlwaysApply )
|
|
{
|
|
AcceptClicked();
|
|
return;
|
|
}
|
|
|
|
if (!bCancelled)
|
|
SaveSettings();
|
|
}
|
|
|
|
function SaveSettings();
|
|
function ResetClicked();
|
|
|
|
function string GetNativeClassName(string VarName)
|
|
{
|
|
local int i;
|
|
local string Str;
|
|
|
|
Str = PlayerOwner().ConsoleCommand("get ini:"$VarName@"Class");
|
|
i = InStr(Str, "'");
|
|
if (i != -1)
|
|
{
|
|
Str = Mid(Str, InStr(Str, "'") + 1);
|
|
Str = Left(Str, Len(Str) - 1);
|
|
}
|
|
|
|
return Str;
|
|
}
|
|
|
|
function ShowPerformanceWarning( optional float Seconds )
|
|
{
|
|
if ( Controller == None || default.bExpert )
|
|
return;
|
|
|
|
if ( !Controller.OpenMenu(PerformanceWarningMenu, string(Seconds)) )
|
|
{
|
|
if ( Seconds <= 0.0 )
|
|
Seconds = 3.5;
|
|
|
|
WarningLength = Seconds;
|
|
WarningCounter = 0.0;
|
|
|
|
SetTimer( 0.1, True );
|
|
|
|
OnRendered = DrawPerfWarn;
|
|
}
|
|
}
|
|
|
|
event Timer()
|
|
{
|
|
WarningCounter += 0.1;
|
|
}
|
|
|
|
function DrawPerfWarn( Canvas C )
|
|
{
|
|
C.Style = 5; // Alpha
|
|
C.SetDrawColor( 250, 250, 250, 255 * FMax( ((WarningLength - WarningCounter)/WarningLength), 0.0 ) );
|
|
C.Font = Controller.GetMenuFont("UT2SmallHeaderFont").GetFont(C.SizeX);
|
|
C.DrawTextJustified( PerformanceWarningText, 1, ActualLeft(), ActualTop(), ActualLeft() + ActualWidth(), (ActualTop() + ActualHeight()) * 0.8 );
|
|
if ( WarningCounter >= WarningLength )
|
|
{
|
|
WarningLength = 0.0;
|
|
WarningCounter = 0.0;
|
|
OnRendered = None;
|
|
KillTimer();
|
|
}
|
|
}
|
|
|
|
function InternalOnChange(GUIComponent Sender)
|
|
{
|
|
if ( !bAlwaysApply && Setting.b_Apply != None )
|
|
EnableComponent(Setting.b_Apply);
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
bAlwaysApply=True
|
|
FadeInTime=0.15
|
|
PerformanceWarningMenu="GUI2K4.UT2K4PerformWarn"
|
|
PerformanceWarningText="The change you are making may adversely affect your performance."
|
|
}
|