KF2-Server-Extension/ServerExt/Classes/UIP_PerkSelectionLobby.uc

87 lines
2.6 KiB
Ucode
Raw Normal View History

Class UIP_PerkSelectionLobby extends UIP_PerkSelection;
function Timer()
{
local int i;
CurrentManager = ExtPlayerController(GetPlayer()).ActivePerkManager;
if( CurrentManager!=None )
{
if( PrevPendingPerk!=None )
{
PendingPerk = CurrentManager.FindPerk(PrevPendingPerk);
PrevPendingPerk = None;
}
PerkList.ChangeListSize(CurrentManager.UserPerks.Length);
if( PendingPerk!=None && !PendingPerk.bPerkNetReady )
return;
// Huge code block to handle stat updating, but actually pretty well optimized.
if( PendingPerk!=OldUsedPerk )
{
OldUsedPerk = PendingPerk;
if( PendingPerk!=None )
{
OldPerkPoints = -1;
if( StatsList.ItemComponents.Length!=PendingPerk.PerkStats.Length )
{
if( StatsList.ItemComponents.Length<PendingPerk.PerkStats.Length )
{
for( i=StatsList.ItemComponents.Length; i<PendingPerk.PerkStats.Length; ++i )
{
if( i>=StatBuyers.Length )
{
StatBuyers[StatBuyers.Length] = UIR_PerkStat(StatsList.AddListComponent(class'UIR_PerkStat'));
StatBuyers[i].StatIndex = i;
StatBuyers[i].InitMenu();
}
else
{
StatsList.ItemComponents.Length = i+1;
StatsList.ItemComponents[i] = StatBuyers[i];
}
}
}
else if( StatsList.ItemComponents.Length>PendingPerk.PerkStats.Length )
{
for( i=PendingPerk.PerkStats.Length; i<StatsList.ItemComponents.Length; ++i )
StatBuyers[i].CloseMenu();
StatsList.ItemComponents.Length = PendingPerk.PerkStats.Length;
}
}
OldPerkPoints = PendingPerk.CurrentSP;
PerkLabel.SetText("Lv"$PendingPerk.GetLevelString()@PendingPerk.PerkName$" (Points: "$PendingPerk.CurrentSP$")");
for( i=0; i<StatsList.ItemComponents.Length; ++i ) // Just make sure perk stays the same.
{
StatBuyers[i].SetActivePerk(PendingPerk);
StatBuyers[i].CheckBuyLimit();
}
UpdateTraits();
}
else // Empty out if needed.
{
for( i=0; i<StatsList.ItemComponents.Length; ++i )
StatBuyers[i].CloseMenu();
StatsList.ItemComponents.Length = 0;
PerkLabel.SetText("<No perk selected>");
}
}
else if( PendingPerk!=None && OldPerkPoints!=PendingPerk.CurrentSP )
{
OldPerkPoints = PendingPerk.CurrentSP;
PerkLabel.SetText("Lv"$PendingPerk.GetLevelString()@PendingPerk.PerkName$" (Points: "$PendingPerk.CurrentSP$")");
for( i=0; i<StatsList.ItemComponents.Length; ++i ) // Just make sure perk stays the same.
StatBuyers[i].CheckBuyLimit();
// Update traits list.
UpdateTraits();
}
}
}
defaultproperties
{
Components.Remove(UnloadPerkButton)
Components.Remove(PrestigePerkButton)
Components.Remove(ResetPerkButton)
}