//============================================================================= // KFActor_DestructibleTracker //============================================================================= // One-off actor for tracking the status of multiple KFDestructibleActors // and triggering event objective completion when they're all dead. //============================================================================= // Killing Floor 2 // Copyright (C) 2017 Tripwire Interactive LLC //============================================================================= class KFActor_DestructibleTracker extends Actor placeable; //List of destructibles to kill. When this is empty, trigger event completion var() const array ActorList; var array CurrentActorList; //Event-specific information var() SeasonalEventIndex EventIndex; var() int ObjectiveIndex; simulated event SetInitialState() { super.SetInitialState(); SetupActorDelegates(); } function SetupActorDelegates() { local KFDestructibleActor DActor; CurrentActorList = ActorList; foreach CurrentActorList(DActor) { DActor.OnDestroyed = OnDestroyed; } } event Destroyed() { local KFDestructibleActor DActor; super.Destroyed(); foreach ActorList(DActor) { DActor.OnDestroyed = none; } } function OnDestroyed(KFDestructibleActor DActor) { local KFPlayerController KFPC; if (CurrentActorList.Find(DActor) != INDEX_NONE) { CurrentActorList.RemoveItem(DActor); } if (CurrentActorList.Length == 0) { foreach WorldInfo.AllControllers(class'KFPlayerController', KFPC) { // @todo: hook up seasonal event here if/when desired } } } defaultproperties { Begin Object Class=SpriteComponent Name=Sprite Sprite=Texture2D'EditorResources.S_Trigger' HiddenGame=true AlwaysLoadOnClient=False AlwaysLoadOnServer=False SpriteCategoryName="Triggers" End Object Components.Add(Sprite) }