RealtimeStyleTransferRuntime/Source/LyraGame/Inventory/LyraInventoryItemInstance.h

69 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "System/GameplayTagStack.h"
#include "LyraInventoryItemDefinition.h"
#include "LyraInventoryItemInstance.generated.h"
/**
* ULyraInventoryItemInstance
*/
UCLASS(BlueprintType)
class ULyraInventoryItemInstance : public UObject
{
GENERATED_BODY()
public:
ULyraInventoryItemInstance(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
//~UObject interface
virtual bool IsSupportedForNetworking() const override { return true; }
//~End of UObject interface
// Adds a specified number of stacks to the tag (does nothing if StackCount is below 1)
UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, Category=Inventory)
void AddStatTagStack(FGameplayTag Tag, int32 StackCount);
// Removes a specified number of stacks from the tag (does nothing if StackCount is below 1)
UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, Category= Inventory)
void RemoveStatTagStack(FGameplayTag Tag, int32 StackCount);
// Returns the stack count of the specified tag (or 0 if the tag is not present)
UFUNCTION(BlueprintCallable, Category=Inventory)
int32 GetStatTagStackCount(FGameplayTag Tag) const;
// Returns true if there is at least one stack of the specified tag
UFUNCTION(BlueprintCallable, Category=Inventory)
bool HasStatTag(FGameplayTag Tag) const;
TSubclassOf<ULyraInventoryItemDefinition> GetItemDef() const
{
return ItemDef;
}
UFUNCTION(BlueprintCallable, BlueprintPure=false, meta=(DeterminesOutputType=FragmentClass))
const ULyraInventoryItemFragment* FindFragmentByClass(TSubclassOf<ULyraInventoryItemFragment> FragmentClass) const;
template <typename ResultClass>
const ResultClass* FindFragmentByClass() const
{
return (ResultClass*)FindFragmentByClass(ResultClass::StaticClass());
}
private:
void SetItemDef(TSubclassOf<ULyraInventoryItemDefinition> InDef);
friend struct FLyraInventoryList;
private:
UPROPERTY(Replicated)
FGameplayTagStackContainer StatTags;
// The item definition
UPROPERTY(Replicated)
TSubclassOf<ULyraInventoryItemDefinition> ItemDef;
};