//=============================================================================
// KFGFxPostGameContainer_PlayerXP
//=============================================================================
// Class Description
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//  - Zane Gholson 07/10/2015
//=============================================================================

class KFGFxPostGameContainer_PlayerXP extends KFGFxObject_Container;

var int ItemCount;

//==============================================================
// Initialization
//==============================================================
function Initialize( KFGFxObject_Menu NewParentMenu )
{
	super.Initialize( NewParentMenu );
	SetXPList();
}

function SetXPList()
{
	local GFxObject ObjectArray;
	local KFPlayerReplicationInfo KFPRI;
	local KFPlayerController KFPC;
	local int i;
	local EphemeralMatchStats StatCollector;

	ItemCount = 0;

	KFPRI = KFPlayerReplicationInfo(GetPC().PlayerReplicationInfo);

	KFPC = KFPlayerController(GetPC());

	if(KFPRI != none && KFPC != none)
	{
		StatCollector = KFPC.MatchStats;

		ObjectArray = CreateArray();

		StatCollector.PerkXPList.Sort(StatCollector.SortXP);
		//Temp XP Print out on AAR player stats
		for (i = 0; i < StatCollector.PerkXPList.length; i++)
		{
			// Only show perks with progress this match
			if ( StatCollector.PerkXPList[i].XPDelta > 0 )
			{
				ObjectArray.SetElementObject(ItemCount, MakePerkXPObject(StatCollector.PerkXPList[i]));
			}
		}
	}

	SetObject("xpList", ObjectArray);
}

function GFxObject MakePerkXPObject(PerkXPGain PerkXPObject)
{
	local GFxObject TempGFxObject;
	local KFPlayerController KFPC; 
	local float BonusXPMultiplier;
	

	KFPC = KFPlayerController(GetPC());
	TempGFxObject = CreateObject("Object");

	BonusXPMultiplier = KFPC.GetPerkPrestigeXPMultiplier(PerkXPObject.PerkClass);

	TempGFxObject.SetInt("bonusXP", PerkXPObject.BonusXP); 
	TempGFxObject.SetString("bonusXPMultiplier", int(BonusXPMultiplier * 100) $"%" @class'KFCommon_LocalizedStrings'.default.PrestigeBonusString );
	TempGFxObject.SetFloat("startXP", 		PerkXPObject.StartXPPercentage);	
	TempGFxObject.SetFloat("finishXP", 		Min(KFPC.GetPerkLevelProgressPercentage(PerkXPObject.PerkClass), 100 ));	
	TempGFxObject.SetFloat("xpDelta", 		PerkXPObject.XPDelta);	
	TempGFxObject.SetInt("perkLevel", 		PerkXPObject.StartLevel);	
	TempGFxObject.SetInt("finishLevel", 	KFPC.GetPerkLevelFromPerkList(PerkXPObject.PerkClass));	
	TempGFxObject.SetString("perkName", 	PerkXPObject.PerkClass.default.PerkName);	
	TempGFxObject.SetString("perkIcon",		"img://" $PerkXPObject.PerkClass.static.GetPerkIconPath());
	TempGFxObject.SetString("objective1", 	PerkXPObject.PerkClass.default.EXPAction1);
	TempGFxObject.SetInt("objective1Value", PerkXPObject.XPDelta - PerkXPObject.SecondaryXPGain - PerkXPObject.BonusXP);
	TempGFxObject.SetString("objective2", 	PerkXPObject.PerkClass.default.EXPAction2);
	TempGFxObject.SetInt("objective2Value", PerkXPObject.SecondaryXPGain );

	ItemCount++;

	return TempGFxObject;
}

DefaultProperties
{
	ItemCount=-1
}