rott/kf_sources/GUI2K4/Classes/Settings_Tabs.uc
2026-07-14 20:27:09 +07:00

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."
}