82 lines
1.7 KiB
C++
82 lines
1.7 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "LyraInventoryItemDefinition.h"
|
|
#include "UObject/Interface.h"
|
|
#include "IPickupable.generated.h"
|
|
|
|
class ULyraInventoryItemInstance;
|
|
class ULyraInventoryManagerComponent;
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FPickupTemplate
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UPROPERTY(EditAnywhere)
|
|
int32 StackCount = 1;
|
|
|
|
UPROPERTY(EditAnywhere)
|
|
TSubclassOf<ULyraInventoryItemDefinition> ItemDef;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FPickupInstance
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly)
|
|
ULyraInventoryItemInstance* Item = nullptr;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FInventoryPickup
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly)
|
|
TArray<FPickupInstance> Instances;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly)
|
|
TArray<FPickupTemplate> Templates;
|
|
};
|
|
|
|
/** */
|
|
UINTERFACE(MinimalAPI, BlueprintType, meta = (CannotImplementInterfaceInBlueprint))
|
|
class UPickupable : public UInterface
|
|
{
|
|
GENERATED_BODY()
|
|
};
|
|
|
|
/** */
|
|
class IPickupable
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UFUNCTION(BlueprintCallable)
|
|
virtual FInventoryPickup GetPickupInventory() const = 0;
|
|
};
|
|
|
|
/** */
|
|
UCLASS()
|
|
class UPickupableStatics : public UBlueprintFunctionLibrary
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UPickupableStatics();
|
|
|
|
public:
|
|
UFUNCTION(BlueprintPure, meta = (WorldContext = "Ability"))
|
|
static TScriptInterface<IPickupable> GetIPickupableFromActorInfo(UGameplayAbility* Ability);
|
|
|
|
UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, meta = (WorldContext = "Ability"))
|
|
static void AddPickupInventory(ULyraInventoryManagerComponent* InventoryComponent, TScriptInterface<IPickupable> Pickupable);
|
|
};
|