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

438 lines
11 KiB
Ucode

class KFGameSettings extends Settings_Tabs;
var automated GUISectionBackground i_BG1, i_BG2;
//var automated moEditBox ed_PlayerName;
var automated moCheckBox ch_DynNetspeed;
var automated moComboBox co_Netspeed;
var automated moComboBox co_Hints;
var int HintLevel,
HintLevelD; // 0 = all hints, 1 = new hints, 2 = no hints
var localized array<string> Hints;
var automated moComboBox co_AudioMessageLevel;
var int AudioMessageLevel,
AudioMessageLevelD;
var localized string AudioMessageLevels[3];
var automated moCheckBox ch_TraderPath;
var bool bTrader;
var int iNetspeed, iNetSpeedD;
var bool bDynNet;
var string sPlayerName, sPlayerNameD;
var localized string NetSpeedText[4];
function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
local int i;
Super.InitComponent(MyController, MyOwner);
for(i = 0; i < ArrayCount(NetSpeedText); i++)
co_Netspeed.AddItem(NetSpeedText[i]);
i_BG2.ManageComponent(co_Netspeed);
i_BG2.ManageComponent(ch_DynNetspeed);
i_BG1.ManageComponent(co_Hints);
i_BG1.ManageComponent(ch_TraderPath);
i_BG1.ManageComponent(co_AudioMessageLevel);
for ( i = 0; i < Hints.Length; i++ )
{
co_Hints.AddItem(Hints[i]);
}
co_Hints.ReadOnly(true);
for (i = 0; i < 3; i++)
{
co_AudioMessageLevel.AddItem(AudioMessageLevels[i]);
}
co_AudioMessageLevel.ReadOnly(true);
}
function InternalOnLoadINI(GUIComponent Sender, string s)
{
local PlayerController PC;
local int i;
PC = PlayerOwner();
switch (Sender)
{
case co_Netspeed:
if ( PC.Player != None )
i = PC.Player.ConfiguredInternetSpeed;
else
i = class'Player'.default.ConfiguredInternetSpeed;
if (i <= 2600)
iNetSpeed = 0;
else if (i <= 5000)
iNetSpeed = 1;
else if (i <= 10000)
iNetSpeed = 2;
else iNetSpeed = 3;
iNetSpeedD = iNetSpeed;
co_NetSpeed.SetIndex(iNetSpeed);
break;
case ch_DynNetspeed:
bDynNet = PC.bDynamicNetSpeed;
ch_DynNetspeed.Checked(bDynNet);
break;
case co_Hints:
if ( KFPlayerController(PlayerOwner()) != none )
{
if ( KFPlayerController(PlayerOwner()).bShowHints )
{
HintLevel = 1;
}
else
{
HintLevel = 2;
}
}
else
{
if ( class'KFPlayerController'.default.bShowHints )
{
HintLevel = 1;
}
else
{
HintLevel = 2;
}
}
HintLevelD = HintLevel;
co_Hints.SetIndex(HintLevel);
break;
case ch_TraderPath:
if ( KFPlayerController(PlayerOwner()) != none )
{
bTrader = KFPlayerController(PlayerOwner()).bWantsTraderPath;
}
else
{
bTrader = class'KFPlayerController'.default.bWantsTraderPath;
}
ch_TraderPath.SetComponentValue(bTrader,true);
break;
case co_AudioMessageLevel:
AudioMessageLevel = int(PC.ConsoleCommand("get KFMod.KFPlayerController AudioMessageLevel"));
AudioMessageLevelD = AudioMessageLevel;
co_AudioMessageLevel.SetIndex(AudioMessageLevel);
break;
}
}
function SaveSettings()
{
local PlayerController PC;
local bool bSave;
Super.SaveSettings();
PC = PlayerOwner();
if ( iNetSpeed != iNetSpeedD || (class'Player'.default.ConfiguredInternetSpeed == 9636) )
{
if ( PC.Player != None )
{
switch (iNetSpeed)
{
case 0: PC.Player.ConfiguredInternetSpeed = 2600; break;
case 1: PC.Player.ConfiguredInternetSpeed = 5000; break;
case 2: PC.Player.ConfiguredInternetSpeed = 10000; break;
case 3: PC.Player.ConfiguredInternetSpeed = 15000; break;
}
PC.Player.SaveConfig();
}
else
{
switch (iNetSpeed)
{
case 0: class'Player'.default.ConfiguredInternetSpeed = 2600; break;
case 1: class'Player'.default.ConfiguredInternetSpeed = 5000; break;
case 2: class'Player'.default.ConfiguredInternetSpeed = 10000; break;
case 3: class'Player'.default.ConfiguredInternetSpeed = 15000; break;
}
class'Player'.static.StaticSaveConfig();
}
}
if ( PC.bDynamicNetSpeed != bDynNet )
{
PC.bDynamicNetSpeed = bDynNet;
bSave = True;
}
if ( HintLevelD != HintLevel )
{
if (HintLevel == 0)
{
if (KFPlayerController(PC) != none)
{
KFPlayerController(PC).bShowHints = true;
KFPlayerController(PC).UpdateHintManagement(true);
if (KFPlayerController(PC).HintManager != none)
KFPlayerController(PC).HintManager.NonStaticReset();
KFPlayerController(PC).SaveConfig();
}
else
{
class'KFHintManager'.static.StaticReset();
class'KFPlayerController'.default.bShowHints = true;
class'KFPlayerController'.static.StaticSaveConfig();
}
}
else
{
if (KFPlayerController(PC) != none)
{
KFPlayerController(PC).bShowHints = (HintLevel == 1);
KFPlayerController(PC).UpdateHintManagement(HintLevel == 1);
KFPlayerController(PC).SaveConfig();
}
else
{
class'KFPlayerController'.default.bShowHints = (HintLevel == 1);
class'KFPlayerController'.static.StaticSaveConfig();
}
}
}
if (KFPlayerController(PlayerOwner()) != none)
{
KFPlayerController(PlayerOwner()).bWantsTraderPath = bTrader;
KFPlayerController(PC).SaveConfig();
}
else
{
class'KFPlayerController'.default.bWantsTraderPath = bTrader;
class'KFPlayerController'.static.StaticSaveConfig();
}
if ( AudioMessageLevelD != AudioMessageLevel )
{
if (KFPlayerController(PlayerOwner()) != none)
{
KFPlayerController(PlayerOwner()).AudioMessageLevel = AudioMessageLevel;
KFPlayerController(PC).SaveConfig();
}
else
{
class'KFPlayerController'.default.AudioMessageLevel = AudioMessageLevel;
class'KFPlayerController'.static.StaticSaveConfig();
}
}
if (bSave)
PC.SaveConfig();
}
function InternalOnChange(GUIComponent Sender)
{
Super.InternalOnChange(Sender);
switch (sender)
{
case co_Netspeed:
iNetSpeed = co_NetSpeed.GetIndex();
break;
case ch_DynNetspeed:
bDynNet = ch_DynNetspeed.IsChecked();
break;
case co_Hints:
HintLevel = co_Hints.GetIndex();
break;
case ch_TraderPath:
bTrader = ch_TraderPath.IsChecked();
break;
case co_AudioMessageLevel:
AudioMessageLevel = co_AudioMessageLevel.GetIndex();
break;
}
}
function ResetClicked()
{
local PlayerController PC;
local int i;
Super.ResetClicked();
PC = PlayerOwner();
class'Player'.static.ResetConfig("ConfiguredInternetSpeed");
class'PlayerController'.static.ResetConfig("bDynamicNetSpeed");
for (i = 0; i < Components.Length; i++)
Components[i].LoadINI();
}
DefaultProperties
{
Begin Object class=GUISectionBackground Name=GameBK1
WinWidth=0.5
WinHeight=0.25
WinLeft=0.25
WinTop=0.05
RenderWeight=0.1001
Caption="Gameplay"
End Object
i_BG1=GameBK1
Begin Object class=GUISectionBackground Name=GameBK2
WinWidth=0.5
WinHeight=0.2
WinLeft=0.25
WinTop=0.35
RenderWeight=0.1002
Caption="Network"
End Object
i_BG2=GameBK2
/* Begin Object class=moEditBox Name=OnlineStatsName
WinWidth=0.419316
WinLeft=0.524912
WinTop=0.373349
INIOption="@Internal"
OnLoadINI=InternalOnLoadINI
OnChange=InternalOnChange
Caption="Player Name"
Hint="Please select a name to use ingame"
CaptionWidth=0.5
TabOrder=1
End Object
ed_PlayerName=OnlineStatsName
*/
Begin Object class=moComboBox Name=OnlineNetSpeed
WinWidth=0.419297
WinLeft=0.528997
WinTop=0.222944
Caption="Connection"
INIOption="@Internal"
INIDefault="Cable Modem/DSL"
OnLoadINI=InternalOnLoadINI
OnChange=InternalOnChange
Hint="How fast is your connection?"
CaptionWidth=0.5
ComponentJustification=TXTA_Left
bReadOnly=true
bHeightFromComponent=false
TabOrder=3
End Object
co_Netspeed=OnlineNetSpeed
Begin Object class=moCheckBox Name=NetworkDynamicNetspeed
WinWidth=0.419297
WinLeft=0.528997
WinTop=0.266017
Caption="Dynamic Netspeed"
Hint="Netspeed is automatically adjusted based on the speed of your network connection"
CaptionWidth=0.955
bSquare=true
ComponentJustification=TXTA_Left
IniOption="@Internal"
OnLoadINI=InternalOnLoadINI
OnChange=InternalOnChange
TabOrder=4
End Object
ch_DynNetspeed=NetworkDynamicNetspeed
Begin Object Class=moComboBox Name=HintsCombo
Caption="Hint Level"
ComponentJustification=TXTA_Left
Hint="Selects whether hints should be shown or not."
WinWidth=0.401953
WinLeft=0.547773
WinTop=0.335021
CaptionWidth=0.55
TabOrder=0
bBoundToParent=True
bScaleToParent=True
OnLoadINI=InternalOnLoadINI
OnChange=InternalOnChange
IniOption="@Internal"
End Object
co_Hints=HintsCombo
Begin Object class=moCheckBox Name=TraderPath
Caption="Show the trader path"
Hint="Enables the path to the trader"
CaptionWidth=0.955
bSquare=True
ComponentJustification=TXTA_Left
OnLoadINI=InternalOnLoadINI
OnChange=InternalOnChange
INIOption="@Internal"
INIDefault="False"
bAutoSizeCaption=True
End Object
ch_TraderPath=TraderPath
Begin Object Class=moComboBox Name=AudioMessageCombo
Caption="Audio Message Level"
ComponentJustification=TXTA_Left
Hint="Selects what type of messages are played"
WinWidth=0.401953
WinLeft=0.547773
WinTop=0.335021
CaptionWidth=0.55
TabOrder=0
bBoundToParent=True
bScaleToParent=True
OnLoadINI=InternalOnLoadINI
OnChange=InternalOnChange
IniOption="@Internal"
End Object
co_AudioMessageLevel=AudioMessageCombo
Hints(0)="All Hints (Reset)"
Hints(1)="New Hints Only"
Hints(2)="No Hints"
AudioMessageLevels(0)="All Messages"
AudioMessageLevels(1)="Important Messages"
AudioMessageLevels(2)="Minimal Messages"
WinTop=0.15
WinLeft=0
WinWidth=1
WinHeight=0.72
bAcceptsInput=false
NetSpeedText(0)="Modem"
NetSpeedText(1)="ISDN"
NetSpeedText(2)="Cable/ADSL"
NetSpeedText(3)="LAN/T1"
PanelCaption="Game"
}