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

182 lines
4.7 KiB
Ucode

class SRTab_Profile extends KFTab_Profile;
var string ChangedCharacter,ClientRepChar;
function bool InternalDraw(Canvas canvas)
{
local PlayerController PC;
PC = PlayerOwner();
if( PC.PlayerReplicationInfo!=None && ClientRepChar!=PC.PlayerReplicationInfo.CharacterName )
SetPlayerRec(); // Delayed replication setup.
return Super.InternalDraw(Canvas);
}
function UpdateScroll()
{
if( PlayerRec.TextName!="" )
lb_Scroll.SetContent(PlayerRec.TextName);
else Super.UpdateScroll();
}
function InternalOnLoadINI(GUIComponent Sender, string s)
{
ChangedCharacter = "";
if ( Sender == i_Portrait )
SetPlayerRec();
}
function bool PickModel(GUIComponent Sender)
{
if ( Controller.OpenMenu(string(Class'SRModelSelect'), PlayerRec.DefaultName, Eval(Controller.CtrlPressed, PlayerRec.Race, "")) )
{
Controller.ActivePage.OnClose = ModelSelectClosed;
}
return true;
}
function SetPlayerRec()
{
local PlayerController PC;
PC = PlayerOwner();
if( ChangedCharacter!="" )
sChar = ChangedCharacter;
else if( PC.PlayerReplicationInfo!=None )
sChar = PC.PlayerReplicationInfo.CharacterName;
if( PC.PlayerReplicationInfo!=None )
ClientRepChar = PC.PlayerReplicationInfo.CharacterName;
PlayerRec = Class'xUtil'.Static.FindPlayerRecord(sChar);
UpdateScroll();
ShowSpinnyDude();
}
function ShowPanel(bool bShow)
{
local ClientPerkRepLink S;
if ( bShow )
{
if ( bInit )
{
bRenderDude = True;
bInit = False;
}
if ( PlayerOwner() != none )
{
S = Class'ClientPerkRepLink'.Static.FindStats(PlayerOwner());
if ( S!=none )
{
// Initialize the List
lb_PerkSelect.List.InitList(None);
lb_PerkProgress.List.InitList();
}
}
}
lb_PerkSelect.SetPosition(i_BGPerks.WinLeft + 6.0 / float(Controller.ResX),
i_BGPerks.WinTop + 38.0 / float(Controller.ResY),
i_BGPerks.WinWidth - 10.0 / float(Controller.ResX),
i_BGPerks.WinHeight - 35.0 / float(Controller.ResY),
true);
SetVisibility(bShow);
}
function SaveSettings()
{
local PlayerController PC;
local ClientPerkRepLink S;
PC = PlayerOwner();
S = Class'ClientPerkRepLink'.Static.FindStats(PC);
if ( ChangedCharacter!="" )
{
if( S!=None )
S.SelectedCharacter(ChangedCharacter);
else
{
PC.ConsoleCommand("ChangeCharacter"@ChangedCharacter);
if ( !PC.IsA('xPlayer') )
PC.UpdateURL("Character", ChangedCharacter, True);
if ( PlayerRec.Sex ~= "Female" )
PC.UpdateURL("Sex", "F", True);
else PC.UpdateURL("Sex", "M", True);
}
ChangedCharacter = "";
}
if ( lb_PerkSelect.GetIndex()>=0 && S!=None )
S.ServerSelectPerk(S.CachePerks[lb_PerkSelect.GetIndex()].PerkClass);
}
function ModelSelectClosed( optional bool bCancelled )
{
local string str;
if ( bCancelled )
return;
str = Controller.ActivePage.GetDataString();
if ( str != "" )
{
ChangedCharacter = str;
SetPlayerRec();
}
}
function OnPerkSelected(GUIComponent Sender)
{
local ClientPerkRepLink ST;
local byte Idx;
local string S;
ST = Class'ClientPerkRepLink'.Static.FindStats(PlayerOwner());
if ( ST==None || ST.CachePerks.Length==0 )
{
if( ST!=None )
ST.ServerRequestPerks();
lb_PerkEffects.SetContent("Please wait while your client is loading the perks...");
}
else
{
Idx = lb_PerkSelect.GetIndex();
if( ST.CachePerks[Idx].CurrentLevel==0 )
S = ST.CachePerks[Idx].PerkClass.Static.GetVetInfoText(0,1);
else if( ST.CachePerks[Idx].CurrentLevel==ST.MaximumLevel )
S = ST.CachePerks[Idx].PerkClass.Static.GetVetInfoText(ST.CachePerks[Idx].CurrentLevel-1,1);
else S = ST.CachePerks[Idx].PerkClass.Static.GetVetInfoText(ST.CachePerks[Idx].CurrentLevel-1,1)$Class'SRTab_MidGamePerks'.Default.NextInfoStr$ST.CachePerks[Idx].PerkClass.Static.GetVetInfoText(ST.CachePerks[Idx].CurrentLevel,1);
lb_PerkEffects.SetContent(S);
lb_PerkProgress.List.PerkChanged(KFStatsAndAchievements, Idx);
}
}
defaultproperties
{
Begin Object Class=SRPerkSelectListBox Name=PerkSelectList
OnCreateComponent=PerkSelectList.InternalOnCreateComponent
WinTop=0.082969
WinLeft=0.323418
WinWidth=0.318980
WinHeight=0.654653
End Object
lb_PerkSelect=SRPerkSelectListBox'ServerPerks.SRTab_Profile.PerkSelectList'
Begin Object Class=SRPerkProgressListBox Name=PerkProgressList
OnCreateComponent=PerkProgressList.InternalOnCreateComponent
WinTop=0.439668
WinLeft=0.670121
WinWidth=0.319980
WinHeight=0.292235
End Object
lb_PerkProgress=SRPerkProgressListBox'ServerPerks.SRTab_Profile.PerkProgressList'
}