//============================================================================= // KFGFxPerksContainer_Skills //============================================================================= // Class Description //============================================================================= // Killing Floor 2 // Copyright (C) 2015 Tripwire Interactive LLC // - Author 12/11/2013 //============================================================================= class KFGFxPerksContainer_Skills extends KFGFxPerksContainer DependsOn(KFPerk) DependsOn(KFGFxMenu_Perks); var const int MAX_SLOTS; var localized string ConfigureSkillsString, BackButtonString; function Initialize( KFGFxObject_Menu NewParentMenu ) { super.Initialize( NewParentMenu ); LocalizeContainer(); } function LocalizeContainer() { GetObject("confirmButton").SetString("label", BackButtonString); GetObject("titleTextfield").SetString("text", ConfigureSkillsString); } function UpdateSkills( class PerkClass, const out byte SelectedSkills[`MAX_PERK_SKILLS] ) { local KFPlayerController KFPC; local bool bShouldUnlock; local byte i, j, UnlockLevel; local GFxObject DataProvider,TempObj; local int PerkLevel; KFPC = KFPlayerController( GetPC() ); DataProvider = CreateArray(); for ( i = 0; i < `MAX_PERK_SKILLS; i++ ) { TempObj = CreateObject( "Object" ); TempObj.SetString( "label", PerkClass.default.SkillCatagories[i] ); UnlockLevel = class'KFPerk'.const.RANK_1_LEVEL + ( class'KFPerk'.const.UNLOCK_INTERVAL * i ); TempObj.SetString( "unlockLevel", LevelString@ UnlockLevel ); PerkLevel = KFPC.GetPerkLevelFromPerkList( PerkClass ); bShouldUnlock = ( UnlockLevel <= PerkLevel ); TempObj.SetBool( "bUnlocked", bShouldUnlock ); TempObj.SetInt( "selectedSkill", SelectedSkills[i] ); for (j = 0; j < MAX_SLOTS; j++) { TempObj.SetObject("skill"$j, GetSkillObject(i, j, bShouldUnlock, PerkClass)); } DataProvider.SetElementObject( i, TempObj ); } SetObject("skillList", DataProvider); } function UpdateTierUnlockState(class PerkClass) { local byte bTierUnlocked; local int PerkLevel; local KFPlayerController KFPC; if(PerkClass == none) { return; } KFPC = KFPlayerController(GetPC()); PerkLevel = KFPC.GetPerkLevelFromPerkList( PerkClass ); class'KFPerk'.static.LoadTierUnlockFromConfig(PerkClass, bTierUnlocked, PerkLevel); if( bool(bTierUnlocked) ) { class'KFPerk'.static.SaveTierUnlockToConfig(PerkClass, 0, PerkLevel); } } function GFxObject GetSkillObject(byte TierIndex, byte SkillIndex, bool bShouldUnlock, class PerkClass) { local GFxObject SkillObject; local string SkillName, SkillDescription; local string IconPath; local int PerkSkillIndex; local array PerkSkillArr; PerkSkillArr = PerkClass.default.PerkSkills; PerkSkillIndex = (TierIndex * 2) + (SkillIndex); if(PerkSkillIndex < PerkClass.Default.PerkSkills.length ) { SkillObject = CreateObject( "Object" ); SkillName = Localize(String(PerkClass.Name), PerkSkillArr[PerkSkillIndex].Name, "KFGame"); SkillObject.SetString("label", SkillName); SkillDescription = Localize(String(PerkClass.Name), PerkSkillArr[PerkSkillIndex].Name$"Description", "KFGame"); SkillObject.SetString("description", SkillDescription); if(bShouldUnlock) { IconPath = PerkSkillArr[PerkSkillIndex].IconPath; } else { IconPath = KFGFxMenu_Perks(ParentMenu).LockIconPath; } } if(IconPath == "") { IconPath = PerkClass.static.GetPerkIconPath(); } SkillObject.SetString("iconSource", "img://"$IconPath); return SkillObject; } defaultproperties() { MAX_SLOTS=2 }