2022-05-23 18:41:30 +00:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
#include "LyraInventoryItemInstance.h"
|
2022-09-13 07:18:28 +00:00
|
|
|
|
|
|
|
#include "Containers/Array.h"
|
|
|
|
#include "GameplayTagContainer.h"
|
2022-05-23 18:41:30 +00:00
|
|
|
#include "Inventory/LyraInventoryItemDefinition.h"
|
2022-09-13 07:18:28 +00:00
|
|
|
#include "Misc/AssertionMacros.h"
|
|
|
|
#include "Net/UnrealNetwork.h"
|
|
|
|
#include "UObject/Class.h"
|
|
|
|
|
|
|
|
#if UE_WITH_IRIS
|
|
|
|
#include "Iris/ReplicationSystem/ReplicationFragmentUtil.h"
|
|
|
|
#endif // UE_WITH_IRIS
|
|
|
|
|
|
|
|
class FLifetimeProperty;
|
2022-05-23 18:41:30 +00:00
|
|
|
|
|
|
|
ULyraInventoryItemInstance::ULyraInventoryItemInstance(const FObjectInitializer& ObjectInitializer)
|
|
|
|
: Super(ObjectInitializer)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void ULyraInventoryItemInstance::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
|
|
|
|
{
|
|
|
|
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
|
|
|
|
|
|
|
|
DOREPLIFETIME(ThisClass, StatTags);
|
|
|
|
DOREPLIFETIME(ThisClass, ItemDef);
|
|
|
|
}
|
|
|
|
|
2022-09-13 07:18:28 +00:00
|
|
|
#if UE_WITH_IRIS
|
|
|
|
void ULyraInventoryItemInstance::RegisterReplicationFragments(UE::Net::FFragmentRegistrationContext& Context, UE::Net::EFragmentRegistrationFlags RegistrationFlags)
|
|
|
|
{
|
|
|
|
using namespace UE::Net;
|
|
|
|
|
|
|
|
Super::RegisterReplicationFragments(Context, RegistrationFlags);
|
|
|
|
|
|
|
|
// Build descriptors and allocate PropertyReplicationFragments for this object
|
|
|
|
FReplicationFragmentUtil::CreateAndRegisterFragmentsForObject(this, Context, RegistrationFlags);
|
|
|
|
}
|
|
|
|
#endif // UE_WITH_IRIS
|
|
|
|
|
2022-05-23 18:41:30 +00:00
|
|
|
void ULyraInventoryItemInstance::AddStatTagStack(FGameplayTag Tag, int32 StackCount)
|
|
|
|
{
|
|
|
|
StatTags.AddStack(Tag, StackCount);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ULyraInventoryItemInstance::RemoveStatTagStack(FGameplayTag Tag, int32 StackCount)
|
|
|
|
{
|
|
|
|
StatTags.RemoveStack(Tag, StackCount);
|
|
|
|
}
|
|
|
|
|
|
|
|
int32 ULyraInventoryItemInstance::GetStatTagStackCount(FGameplayTag Tag) const
|
|
|
|
{
|
|
|
|
return StatTags.GetStackCount(Tag);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool ULyraInventoryItemInstance::HasStatTag(FGameplayTag Tag) const
|
|
|
|
{
|
|
|
|
return StatTags.ContainsTag(Tag);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ULyraInventoryItemInstance::SetItemDef(TSubclassOf<ULyraInventoryItemDefinition> InDef)
|
|
|
|
{
|
|
|
|
ItemDef = InDef;
|
|
|
|
}
|
|
|
|
|
|
|
|
const ULyraInventoryItemFragment* ULyraInventoryItemInstance::FindFragmentByClass(TSubclassOf<ULyraInventoryItemFragment> FragmentClass) const
|
|
|
|
{
|
|
|
|
if ((ItemDef != nullptr) && (FragmentClass != nullptr))
|
|
|
|
{
|
|
|
|
return GetDefault<ULyraInventoryItemDefinition>(ItemDef)->FindFragmentByClass(FragmentClass);
|
|
|
|
}
|
|
|
|
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
|