//=============================================================================
// KFTrigger_ObjectiveLever
//=============================================================================
// Minigame button that is used by map objective. This lever both needs the
// approval of the trigger and the objective in order to be activated.
//=============================================================================
// Killing Floor 2
// Copyright (C) 2018 Tripwire Interactive LLC
//=============================================================================
class KFTrigger_ObjectiveLever extends KFTrigger_MinigameButton
	config(Game);

/** If the owning Map Objective says we can be activated or not. */
var repnotify bool bFathersBlessing;

/** Reference to owning map objective. */
var KFMapObjective_ActivateTrigger OwningObjective;

replication
{
	if (bNetDirty)
		bFathersBlessing;
}

simulated event ReplicatedEvent(name VarName)
{
	if (VarName == nameof(bFathersBlessing))
	{
		if (OwningObjective != none)
		{
			OwningObjective.TriggerObjectiveProgressEvent(bFathersBlessing ? EActivateTriggerProgressEvent_ZoneEnabled : EActivateTriggerProgressEvent_ZoneDisabled);
		}
	}

	super.ReplicatedEvent(VarName);
}

simulated function bool ReadyToActivate()
{
	local bool bReadyToActivate;

	bReadyToActivate = super.ReadyToActivate();
	return bReadyToActivate && bFathersBlessing;
}

function ActivateGame()
{
	if (OwningObjective != none && ReadyToActivate() && bActiveGame && !bInProgress)
	{
		OwningObjective.OnTriggerActivated();
	}

	super.ActivateGame();
}

function AllowReactivation()
{
	super.AllowReactivation();

	if (OwningObjective != none)
	{
		OwningObjective.OnTriggerReactivated();
	}
}

simulated function SetFathersBlessing(bool bNewBlessing)
{
	if (bNewBlessing != bFathersBlessing)
	{
		bFathersBlessing = bNewBlessing;
		bForceNetUpdate = true;

		if (OwningObjective != none)
		{
			OwningObjective.TriggerObjectiveProgressEvent(bFathersBlessing ? EActivateTriggerProgressEvent_ZoneEnabled : EActivateTriggerProgressEvent_ZoneDisabled);
		}
	}
}
defaultproperties
{
	bFathersBlessing=true
}
