添加背包拖拽功能
This commit is contained in:
parent
a1c71b57b4
commit
05983bd28d
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2,7 +2,7 @@
|
||||
"BuildId": "37670630",
|
||||
"Modules":
|
||||
{
|
||||
"ProjectFish": "UnrealEditor-ProjectFish-0001.dll",
|
||||
"ProjectFishEditor": "UnrealEditor-ProjectFishEditor-0001.dll"
|
||||
"ProjectFish": "UnrealEditor-ProjectFish.dll",
|
||||
"ProjectFishEditor": "UnrealEditor-ProjectFishEditor.dll"
|
||||
}
|
||||
}
|
||||
BIN
ProjectFish/Content/UI/Ready/BP_SkillDragOption.uasset
Normal file
BIN
ProjectFish/Content/UI/Ready/BP_SkillDragOption.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
ProjectFish/Content/UI/Ready/WBP_SkillIMoveable.uasset
Normal file
BIN
ProjectFish/Content/UI/Ready/WBP_SkillIMoveable.uasset
Normal file
Binary file not shown.
Binary file not shown.
@ -28,7 +28,19 @@ bool UBagConfigAsset::RemoveSkill(int32 SkillIndex)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool UBagConfigAsset::CanPlaceSkill(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const
|
||||
void UBagConfigAsset::RemoveSkillAsset(class USkillAsset* SkillAsset)
|
||||
{
|
||||
for (int32 i = 0; i < PlacedSkills.Num(); i++)
|
||||
{
|
||||
if (PlacedSkills[i].SkillAsset == SkillAsset)
|
||||
{
|
||||
PlacedSkills.RemoveAt(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool UBagConfigAsset::CanPlaceSkill(USkillAsset* SkillObject, int32 PositionX, int32 PositionY, bool IgnoreSelf ) const
|
||||
{
|
||||
if (!SkillObject || !BagShapeAsset)
|
||||
{
|
||||
@ -40,7 +52,7 @@ bool UBagConfigAsset::CanPlaceSkill(USkillAsset* SkillObject, int32 PositionX, i
|
||||
return false;
|
||||
}
|
||||
|
||||
if (CheckSkillOverlap(SkillObject, PositionX, PositionY))
|
||||
if (CheckSkillOverlap(SkillObject, PositionX, PositionY, IgnoreSelf))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -65,7 +77,7 @@ void UBagConfigAsset::ClearAllSkills()
|
||||
PlacedSkills.Empty();
|
||||
}
|
||||
|
||||
bool UBagConfigAsset::CheckSkillOverlap(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const
|
||||
bool UBagConfigAsset::CheckSkillOverlap(USkillAsset* SkillObject, int32 PositionX, int32 PositionY, bool IgnoreSelf ) const
|
||||
{
|
||||
if (!SkillObject)
|
||||
{
|
||||
@ -80,14 +92,16 @@ bool UBagConfigAsset::CheckSkillOverlap(USkillAsset* SkillObject, int32 Position
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// 检查矩形重叠
|
||||
if (!(PositionX >= ExistingSkill.PositionX + GetSkillSizeValue(ExistingSkill.SkillAsset->SkillSize).X ||
|
||||
PositionX + GetSkillSizeValue(SkillObject->SkillSize).X <= ExistingSkill.PositionX ||
|
||||
PositionY >= ExistingSkill.PositionY + GetSkillSizeValue(ExistingSkill.SkillAsset->SkillSize).Y ||
|
||||
PositionY + GetSkillSizeValue(SkillObject->SkillSize).Y <= ExistingSkill.PositionY))
|
||||
{
|
||||
return true; // 有重叠
|
||||
if (IgnoreSelf && ExistingSkill.SkillAsset == SkillObject)
|
||||
continue;
|
||||
else
|
||||
return true; // 有重叠
|
||||
}
|
||||
}
|
||||
return false; // 无重叠
|
||||
|
||||
@ -79,10 +79,12 @@ public:
|
||||
// 移除技能
|
||||
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
||||
bool RemoveSkill(int32 SkillIndex);
|
||||
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
||||
void RemoveSkillAsset(class USkillAsset* SkillAsset);
|
||||
|
||||
// 检查技能是否可以放置在指定位置
|
||||
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
||||
bool CanPlaceSkill(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const;
|
||||
bool CanPlaceSkill(USkillAsset* SkillObject, int32 PositionX, int32 PositionY, bool IgnoreSelf = false) const;
|
||||
|
||||
// 获取指定位置的技能索引
|
||||
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
||||
@ -98,7 +100,7 @@ public:
|
||||
|
||||
private:
|
||||
// 检查技能之间是否有重叠
|
||||
bool CheckSkillOverlap(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const;
|
||||
bool CheckSkillOverlap(USkillAsset* SkillObject, int32 PositionX, int32 PositionY, bool IgnoreSelf = false) const;
|
||||
|
||||
// 检查技能是否在背包形状范围内
|
||||
bool IsSkillWithinBagShape(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user