63 lines
1.7 KiB
C++
63 lines
1.7 KiB
C++
// Copyright 2026 PHY. All Rights Reserved.
|
|
|
|
#include "Items/PHYItemBlueprintLibrary.h"
|
|
|
|
#include "GIS_ItemInstance.h"
|
|
|
|
const UPHYItemFragment_PropertySet* UPHYItemBlueprintLibrary::FindPropertyFragment(const UGIS_ItemInstance* ItemInstance)
|
|
{
|
|
if (!IsValid(ItemInstance))
|
|
{
|
|
return nullptr;
|
|
}
|
|
|
|
return ItemInstance->FindFragmentByClass<UPHYItemFragment_PropertySet>();
|
|
}
|
|
|
|
EPHYItemArchetype UPHYItemBlueprintLibrary::GetItemArchetype(const UGIS_ItemInstance* ItemInstance)
|
|
{
|
|
if (const UPHYItemFragment_PropertySet* Fragment = FindPropertyFragment(ItemInstance))
|
|
{
|
|
return Fragment->ItemArchetype;
|
|
}
|
|
|
|
return EPHYItemArchetype::Material;
|
|
}
|
|
|
|
EPHYEquipSlotType UPHYItemBlueprintLibrary::GetEquipSlotType(const UGIS_ItemInstance* ItemInstance)
|
|
{
|
|
if (const UPHYItemFragment_PropertySet* Fragment = FindPropertyFragment(ItemInstance))
|
|
{
|
|
return Fragment->EquipSlot;
|
|
}
|
|
|
|
return EPHYEquipSlotType::None;
|
|
}
|
|
|
|
bool UPHYItemBlueprintLibrary::IsWeaponItem(const UGIS_ItemInstance* ItemInstance)
|
|
{
|
|
return GetItemArchetype(ItemInstance) == EPHYItemArchetype::Weapon;
|
|
}
|
|
|
|
bool UPHYItemBlueprintLibrary::IsEquipmentItem(const UGIS_ItemInstance* ItemInstance)
|
|
{
|
|
const EPHYItemArchetype Archetype = GetItemArchetype(ItemInstance);
|
|
return Archetype == EPHYItemArchetype::Weapon || Archetype == EPHYItemArchetype::Equipment;
|
|
}
|
|
|
|
bool UPHYItemBlueprintLibrary::IsConsumableItem(const UGIS_ItemInstance* ItemInstance)
|
|
{
|
|
return GetItemArchetype(ItemInstance) == EPHYItemArchetype::Consumable;
|
|
}
|
|
|
|
FPHYConsumablePayload UPHYItemBlueprintLibrary::GetConsumablePayload(const UGIS_ItemInstance* ItemInstance)
|
|
{
|
|
if (const UPHYItemFragment_PropertySet* Fragment = FindPropertyFragment(ItemInstance))
|
|
{
|
|
return Fragment->ConsumablePayload;
|
|
}
|
|
|
|
return FPHYConsumablePayload();
|
|
}
|
|
|