//=============================================================================
// KFGFxWidget_BackendStatusIndicatorWidget
//=============================================================================
// UI element to show backend connection status
//=============================================================================
// Killing Floor 2
// Copyright (C) 2020 Tripwire Interactive LLC
//  - Roberto Moreno (Saber)
//=============================================================================

class KFGFxWidget_BackendStatusIndicatorWidget extends KFGFxObject_Container;

var localized string BackendStatusIndicatorString;

var bool bConnectedToItemGrantingServer; //[rmoreno@Saber] Item Granting Server should be the same as Tweak Server.

//TODO [rmoreno@Saber] We should clear any timer initialized. Search for WidgetUnloaded and implement it in KFGfxMoviePlayer_Manager.uc
function Init()
{
    //`TimerHelper.SetTimer(5.0, true, nameof(Timer_TestingFlickering), self);
    `TimerHelper.SetTimer(60.0, true, nameof(Timer_CheckIsConnectedToItemGrantingServer), self);
    Timer_CheckIsConnectedToItemGrantingServer();//we call it once as initialization
    LocalizeText();
}

function StartFlickeringConnectionLost()
{
	ActionScriptVoid("startDisconnectionAnimation");
}

function StopFlickeringConnectionLost()
{
	ActionScriptVoid("stopDisconnectionAnimation");
}

function Timer_CheckIsConnectedToItemGrantingServer()
{
    bConnectedToItemGrantingServer = class'KFGameEngine'.static.IsLastRefreshTweakParamsSuccessful(); //[rmoreno@Saber] This function does not make any ping or request just check a variable from TWTweak.cpp which is set when initalizing game and exiting ingame matches.
    //[rmoreno@Saber] In case we want to check playfab we could add to the above condition: && class'GameEngine'.static.GetPlayfabInterface().CachedPlayfabId
    if (bConnectedToItemGrantingServer)
    {
        StopFlickeringConnectionLost();
    }
    else {
        StartFlickeringConnectionLost();
    }

}

function LocalizeText()
{
	local GFxObject LocalizedObject;

    LocalizedObject = CreateObject( "Object" );
	LocalizedObject.SetString("backendStatusIndicatorString", BackendStatusIndicatorString);

	SetObject("localizedText", LocalizedObject);
}


defaultproperties
{
    bConnectedToItemGrantingServer = FALSE
}

