//=============================================================================
// KFGFxPopup_Gamma
//=============================================================================
// Class Description
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//  - Author 1/10/2014
//=============================================================================

class KFGFxPopup_Gamma extends KFGFxObject_Popup;

//@HSL_MOD_BEGIN - amiller 5/25/2016 - Adding support to save extra data into profile settings
`include(KFProfileSettings.uci);
//@HSL_MOD_END
var GFxObject GammaSlider;
var string GammaImagePath;

function InitializePopup( KFGFxMoviePlayer_Manager InManager )
{
	local float GammaMult;

    Super.InitializePopup(InManager);

	GammaSlider = GetObject("mainSlider");
	if(Manager.CachedProfile != none)
	{
		Manager.CachedProfile.GetProfileSettingValueFloat(KFID_GammaMultiplier, GammaMult);  
	}
`if (`notdefined(FINAL_RELEASE))
	else if(class'WorldInfo'.static.IsPlayInEditor())
	{
		GammaMult = class'KFGameEngine'.default.DefaultGammaMult;
	}
`endif

	// Multiplying by 100 so we can go 0-100 with a snapInterval of 1 for consistency. HSL_BB
	GammaSlider.SetFloat("value", GammaMult*100);
	SetString("imagePath", "img://"$GammaImagePath);

 	Manager.bEnableGammaCorrection = true;
 	Manager.RefreshViewportFlags();
}

event OnClosed()
{
    Super.OnClosed();
    Manager.bEnableGammaCorrection = false;
    Manager.RefreshViewportFlags();
	Manager.SaveConfig();
}

function SetGamma( float GammaValue )
{
	local KFGameEngine KFGE;

	KFGE = KFGameEngine(Class'Engine'.static.GetEngine());
	KFGE.GammaMultiplier = GammaValue;
	KFGE.SaveConfig();

	class'KFGameEngine'.static.SetGamma( GammaValue );
	//class'KFGameEngine'.default.GammaMultiplier = GammaValue;
	Manager.CachedProfile.SetProfileSettingValueFloat(KFID_GammaMultiplier, GammaValue);
	Manager.CachedProfile.SetProfileSettingValueInt(KFID_SetGamma, 1);

	class'KFGameEngine'.static.StaticSaveConfig();
}

function ResetGamma()
{
	local float DefaultGamma;
	local KFGameEngine KFGE;
	//@HSL_MOD_BEGIN - amiller 5/25/2016 - Adding support to save extra data into profile settings
	DefaultGamma = Manager.CachedProfile.GetDefaultFloat(KFID_GammaMultiplier);

	// Multiplying by 100 so we can go 0-100 with a snapInterval of 1 for consistency. HSL_BB
	GammaSlider.SetFloat("value", DefaultGamma*100);
	`log("RESET GAMME: DefaultGamma-" @DefaultGamma @"Slider Value -" @(DefaultGamma * 100));
	KFGE = KFGameEngine(Class'Engine'.static.GetEngine());
	KFGE.GammaMultiplier = DefaultGamma;
	KFGE.SaveConfig();

	Manager.CachedProfile.SetProfileSettingValueFloat(KFID_GammaMultiplier, DefaultGamma);
    class'KFGameEngine'.static.SetGamma( DefaultGamma );
	//class'KFGameEngine'.default.GammaMultiplier = DefaultGamma;
//@HSL_MOD_END
	class'KFGameEngine'.static.StaticSaveConfig();
}


function Callback_ClosedPopup()
{
	Manager.bSetGamma = true;
	Manager.CachedProfile.Save( GetLP().ControllerId );
//@SABER_EGS_BEGIN 
	ClosePopUp();
//@SABER_EGS_END
}

function Callback_GammaChanged( float NewGamma )
{
	// Dividing by 100 so we can go 0-100 with a snapInterval of 1 for consistency. HSL_BB
	SetGamma( NewGamma/100 );
}

function Callback_DefaultGamma()
{
	ResetGamma();
}

defaultproperties
{
	GammaImagePath="UI_GammaPopup_TEX.KF2_Brightess_Calibration"
}
