#pragma once #include "CoreMinimal.h" #include "UObject/Interface.h" #include "Interactable.generated.h" class ANakedDesireCharacter; UINTERFACE(MinimalAPI, BlueprintType) class UInteractable : public UInterface { GENERATED_BODY() }; class NAKEDDESIRE_API IInteractable { GENERATED_BODY() public: // Returns true if this actor can currently be interacted with by the given player UFUNCTION(BlueprintNativeEvent) bool CanInteract(ANakedDesireCharacter* Player) const; // Executes the interaction (called server-side) UFUNCTION(BlueprintNativeEvent) void Interact(ANakedDesireCharacter* Player); // Text shown in the interaction prompt UI UFUNCTION(BlueprintNativeEvent) FText GetInteractionPrompt() const; // Called (client-side) when this actor enters the player's proximity radius UFUNCTION(BlueprintNativeEvent) void ShowInteractionProximityHint(); // Called (client-side) when this actor becomes the focused interaction target UFUNCTION(BlueprintNativeEvent) void ShowInteractionFocusHint(); // Called (client-side) when this actor loses proximity or focus UFUNCTION(BlueprintNativeEvent) void HideInteractionHint(); };