lyra_game_ue/Source/LyraGame/Equipment/LyraGameplayAbility_FromEquipment.cpp
Goran Lazarevski 3bcab085f8 Initial commit
2025-03-20 11:06:26 +01:00

55 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "LyraGameplayAbility_FromEquipment.h"
#include "LyraEquipmentInstance.h"
#include "Inventory/LyraInventoryItemInstance.h"
#if WITH_EDITOR
#include "Misc/DataValidation.h"
#endif
#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraGameplayAbility_FromEquipment)
ULyraGameplayAbility_FromEquipment::ULyraGameplayAbility_FromEquipment(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
ULyraEquipmentInstance* ULyraGameplayAbility_FromEquipment::GetAssociatedEquipment() const
{
if (FGameplayAbilitySpec* Spec = UGameplayAbility::GetCurrentAbilitySpec())
{
return Cast<ULyraEquipmentInstance>(Spec->SourceObject.Get());
}
return nullptr;
}
ULyraInventoryItemInstance* ULyraGameplayAbility_FromEquipment::GetAssociatedItem() const
{
if (ULyraEquipmentInstance* Equipment = GetAssociatedEquipment())
{
return Cast<ULyraInventoryItemInstance>(Equipment->GetInstigator());
}
return nullptr;
}
#if WITH_EDITOR
EDataValidationResult ULyraGameplayAbility_FromEquipment::IsDataValid(FDataValidationContext& Context) const
{
EDataValidationResult Result = Super::IsDataValid(Context);
PRAGMA_DISABLE_DEPRECATION_WARNINGS
if (InstancingPolicy == EGameplayAbilityInstancingPolicy::NonInstanced)
PRAGMA_ENABLE_DEPRECATION_WARNINGS
{
Context.AddError(NSLOCTEXT("Lyra", "EquipmentAbilityMustBeInstanced", "Equipment ability must be instanced"));
Result = EDataValidationResult::Invalid;
}
return Result;
}
#endif