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

215 lines
5.3 KiB
Ucode

//-----------------------------------------------------------
//
//-----------------------------------------------------------
class KFTab_Perks extends UT2K4TabPanel;
var automated GUISectionBackground i_BGPerks;
var automated KFPerkSelectListBox lb_PerkSelect;
var automated GUISectionBackground i_BGPerkEffects;
var automated GUIScrollTextBox lb_PerkEffects;
var automated GUISectionBackground i_BGPerkNextLevel;
var automated KFPerkProgressListBox lb_PerkProgress;
var automated GUIButton b_Save;
var automated GUIButton b_Done;
var automated GUILabel l_ChangePerkOncePerWave;
var KFSteamStatsAndAchievements KFStatsAndAchievements;
function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
Super.InitComponent(MyController, MyOwner);
lb_PerkSelect.List.OnChange = OnPerkSelected;
}
event Closed(GUIComponent Sender, bool bCancelled)
{
KFStatsAndAchievements = none;
super.Closed(Sender, bCancelled);
}
function ShowPanel(bool bShow)
{
super.ShowPanel(bShow);
if ( bShow )
{
if ( PlayerOwner() != none )
{
KFStatsAndAchievements = KFSteamStatsAndAchievements(PlayerOwner().SteamStatsAndAchievements);
if ( KFStatsAndAchievements != none )
{
// Initialize the List
lb_PerkSelect.List.InitList(KFStatsAndAchievements);
lb_PerkProgress.List.InitList();
}
}
l_ChangePerkOncePerWave.SetVisibility(false);
}
}
function OnPerkSelected(GUIComponent Sender)
{
if ( KFStatsAndAchievements.bUsedCheats )
{
lb_PerkEffects.SetContent(class'LobbyMenu'.default.PerksDisabledString);
}
else
{
lb_PerkEffects.SetContent(class'KFGameType'.default.LoadedSkills[lb_PerkSelect.GetIndex()].default.LevelEffects[KFStatsAndAchievements.PerkHighestLevelAvailable(lb_PerkSelect.GetIndex())]);
lb_PerkProgress.List.PerkChanged(KFStatsAndAchievements, lb_PerkSelect.GetIndex());
}
}
function bool OnSaveButtonClicked(GUIComponent Sender)
{
local PlayerController PC;
PC = PlayerOwner();
if ( KFPlayerController(PC) != none )
{
if ( KFPlayerController(PC).bChangedVeterancyThisWave && KFPlayerController(PC).SelectedVeterancy != class'KFGameType'.default.LoadedSkills[lb_PerkSelect.GetIndex()] )
{
l_ChangePerkOncePerWave.SetVisibility(true);
}
else
{
class'KFPlayerController'.default.SelectedVeterancy = class'KFGameType'.default.LoadedSkills[lb_PerkSelect.GetIndex()];
KFPlayerController(PC).SetSelectedVeterancy( class'KFGameType'.default.LoadedSkills[lb_PerkSelect.GetIndex()] );
KFPlayerController(PC).SendSelectedVeterancyToServer();
PC.SaveConfig();
}
}
else
{
class'KFPlayerController'.default.SelectedVeterancy = class'KFGameType'.default.LoadedSkills[lb_PerkSelect.GetIndex()];
class'KFPlayerController'.static.StaticSaveConfig();
}
return true;
}
function bool OnDoneClick(GUIComponent Sender)
{
GUIBuyMenu(OwnerPage()).CloseSale(false);
return true;
}
defaultproperties
{
PropagateVisibility=False
WinWidth=.5
WinHeight=.75
WinTop=0.125
WinLeft=0.25
Begin Object class=GUISectionBackground Name=BGPerks
WinWidth=0.457166
WinHeight=0.798982 //0.828982
WinLeft=0.019240
WinTop=0.029674
Caption="Select Perk"
bFillClient=true
End Object
i_BGPerks=BGPerks
Begin Object class=KFPerkSelectListBox Name=PerkSelectList
WinWidth=0.437166
WinHeight=0.742836 //0.772836
WinLeft=0.029240
WinTop=0.091627
End Object
lb_PerkSelect=PerkSelectList
Begin Object class=GUISectionBackground Name=BGPerkEffects
WinWidth=0.491566
WinHeight=0.369766
WinLeft=0.486700
WinTop=0.029674
Caption="Perk Effects"
bFillClient=true
End Object
i_BGPerkEffects=BGPerkEffects
Begin Object Class=GUIScrollTextBox Name=PerkEffectsScroll
WinWidth=0.465143
WinHeight=0.323477
WinLeft=0.500554
WinTop=0.093121
CharDelay=0.0025
EOLDelay=0.1
TabOrder=9
StyleName="NoBackground"
End Object
lb_PerkEffects=PerkEffectsScroll
Begin Object class=GUISectionBackground Name=BGPerksNextLevel
WinWidth=0.490282
WinHeight=0.415466
WinLeft=0.486700
WinTop=0.413209
Caption="Next Level Requirements"
bFillClient=true
End Object
i_BGPerkNextLevel=BGPerksNextLevel
Begin Object class=KFPerkProgressListBox Name=PerkProgressList
WinWidth=0.463858
WinHeight=0.341256
WinLeft=0.499269
WinTop=0.476850
End Object
lb_PerkProgress=PerkProgressList
Begin Object Class=GUIButton Name=SaveButton
Caption="Select Perk"
Hint="Use Selected Perk"
StyleName="SquareButton"
WinWidth=0.363829
WinHeight=0.042757
WinLeft=0.302670
WinTop=0.852604
TabOrder=2
bBoundToParent=True
OnClick=OnSaveButtonClicked
End Object
b_Save=SaveButton
Begin Object Class=GUILabel Name=ChangePerkOncePerWaveLabel
WinWidth=0.500000
WinHeight=0.035000
WinLeft=0.017283
WinTop=0.897148
Caption="You can only change your Perk once per Wave"
TextAlign=TXTA_Left
TextFont="UT2MenuFont"
TextColor=(R=255,G=255,B=255,A=255)
End Object
l_ChangePerkOncePerWave=ChangePerkOncePerWaveLabel
Begin Object Class=GUIButton Name=Done
WinWidth=0.207213
WinHeight=0.035000
WinLeft=0.790508
WinTop=0.941472
Caption="Exit Trader Menu"
OnClick=OnDoneClick
CaptionAlign=TXTA_Center
OnKeyEvent=Cancel.InternalOnKeyEvent
End Object
b_Done=Done
}