添加背包拖拽功能
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",
|
"BuildId": "37670630",
|
||||||
"Modules":
|
"Modules":
|
||||||
{
|
{
|
||||||
"ProjectFish": "UnrealEditor-ProjectFish-0001.dll",
|
"ProjectFish": "UnrealEditor-ProjectFish.dll",
|
||||||
"ProjectFishEditor": "UnrealEditor-ProjectFishEditor-0001.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;
|
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)
|
if (!SkillObject || !BagShapeAsset)
|
||||||
{
|
{
|
||||||
@ -40,7 +52,7 @@ bool UBagConfigAsset::CanPlaceSkill(USkillAsset* SkillObject, int32 PositionX, i
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CheckSkillOverlap(SkillObject, PositionX, PositionY))
|
if (CheckSkillOverlap(SkillObject, PositionX, PositionY, IgnoreSelf))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -65,7 +77,7 @@ void UBagConfigAsset::ClearAllSkills()
|
|||||||
PlacedSkills.Empty();
|
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)
|
if (!SkillObject)
|
||||||
{
|
{
|
||||||
@ -80,14 +92,16 @@ bool UBagConfigAsset::CheckSkillOverlap(USkillAsset* SkillObject, int32 Position
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查矩形重叠
|
// 检查矩形重叠
|
||||||
if (!(PositionX >= ExistingSkill.PositionX + GetSkillSizeValue(ExistingSkill.SkillAsset->SkillSize).X ||
|
if (!(PositionX >= ExistingSkill.PositionX + GetSkillSizeValue(ExistingSkill.SkillAsset->SkillSize).X ||
|
||||||
PositionX + GetSkillSizeValue(SkillObject->SkillSize).X <= ExistingSkill.PositionX ||
|
PositionX + GetSkillSizeValue(SkillObject->SkillSize).X <= ExistingSkill.PositionX ||
|
||||||
PositionY >= ExistingSkill.PositionY + GetSkillSizeValue(ExistingSkill.SkillAsset->SkillSize).Y ||
|
PositionY >= ExistingSkill.PositionY + GetSkillSizeValue(ExistingSkill.SkillAsset->SkillSize).Y ||
|
||||||
PositionY + GetSkillSizeValue(SkillObject->SkillSize).Y <= ExistingSkill.PositionY))
|
PositionY + GetSkillSizeValue(SkillObject->SkillSize).Y <= ExistingSkill.PositionY))
|
||||||
{
|
{
|
||||||
return true; // 有重叠
|
if (IgnoreSelf && ExistingSkill.SkillAsset == SkillObject)
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
return true; // 有重叠
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false; // 无重叠
|
return false; // 无重叠
|
||||||
|
|||||||
@ -79,10 +79,12 @@ public:
|
|||||||
// 移除技能
|
// 移除技能
|
||||||
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
||||||
bool RemoveSkill(int32 SkillIndex);
|
bool RemoveSkill(int32 SkillIndex);
|
||||||
|
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
||||||
|
void RemoveSkillAsset(class USkillAsset* SkillAsset);
|
||||||
|
|
||||||
// 检查技能是否可以放置在指定位置
|
// 检查技能是否可以放置在指定位置
|
||||||
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
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")
|
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
||||||
@ -98,7 +100,7 @@ public:
|
|||||||
|
|
||||||
private:
|
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;
|
bool IsSkillWithinBagShape(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user