40 lines
1.2 KiB
C
40 lines
1.2 KiB
C
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "CoreMinimal.h"
|
||
|
#include "Components/ActorComponent.h"
|
||
|
#include "GameFramework/GameplayMessageSubsystem.h"
|
||
|
#include "GameplayMessageProcessor.generated.h"
|
||
|
|
||
|
/**
|
||
|
* UGameplayMessageProcessor
|
||
|
*
|
||
|
* Base class for any message processor which observes other gameplay messages
|
||
|
* and potentially re-emits updates (e.g., when a chain or combo is detected)
|
||
|
*
|
||
|
* Note that these processors are spawned on the server once (not per player)
|
||
|
* and should do their own internal filtering if only relevant for some players.
|
||
|
*/
|
||
|
UCLASS(BlueprintType, Blueprintable, meta=(BlueprintSpawnableComponent))
|
||
|
class LYRAGAME_API UGameplayMessageProcessor : public UActorComponent
|
||
|
{
|
||
|
GENERATED_BODY()
|
||
|
|
||
|
public:
|
||
|
//~UActorComponent interface
|
||
|
virtual void BeginPlay() override;
|
||
|
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
|
||
|
//~End of UActorComponent interface
|
||
|
|
||
|
virtual void StartListening();
|
||
|
virtual void StopListening();
|
||
|
|
||
|
protected:
|
||
|
void AddListenerHandle(FGameplayMessageListenerHandle&& Handle);
|
||
|
double GetServerTime() const;
|
||
|
|
||
|
private:
|
||
|
TArray<FGameplayMessageListenerHandle> ListenerHandles;
|
||
|
};
|