#pragma once

#include "CoreMinimal.h"
#include "InteractionDefinition.h"
#include "K28LockerTeleportSwapInteraction.generated.h"

class AKiller;
class UActorComponent;

UCLASS(Blueprintable, EditInlineNew, meta=(BlueprintSpawnableComponent))
class UK28LockerTeleportSwapInteraction : public UInteractionDefinition
{
	GENERATED_BODY()

private:
	UFUNCTION(BlueprintCallable, Server, Reliable)
	void Server_RequestTeleportToTarget(AKiller* killer, UActorComponent* teleportTarget);

	UFUNCTION(BlueprintCallable, NetMulticast, Reliable)
	void Multicast_RefuseTeleportationRequest();

	UFUNCTION(BlueprintCallable, NetMulticast, Reliable)
	void Multicast_ConfirmTeleportationRequest(AKiller* killer, UActorComponent* teleportTarget);

	UFUNCTION(BlueprintCallable, NetMulticast, Reliable)
	void Multicast_CompleteTeleportation();

public:
	UK28LockerTeleportSwapInteraction();
};

FORCEINLINE uint32 GetTypeHash(const UK28LockerTeleportSwapInteraction) { return 0; }
