diff --git a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish-0001.dll b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish-0001.dll deleted file mode 100644 index a67bf53..0000000 Binary files a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish-0001.dll and /dev/null differ diff --git a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish.dll b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish.dll index 27c18be..d2d9c38 100644 Binary files a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish.dll and b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish.dll differ diff --git a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor-0001.dll b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor-0001.dll deleted file mode 100644 index bd94ee7..0000000 Binary files a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor-0001.dll and /dev/null differ diff --git a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor.dll b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor.dll index 13fe17f..fbbe2b3 100644 Binary files a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor.dll and b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor.dll differ diff --git a/ProjectFish/Binaries/Win64/UnrealEditor.modules b/ProjectFish/Binaries/Win64/UnrealEditor.modules index fe900f8..22c08e6 100644 --- a/ProjectFish/Binaries/Win64/UnrealEditor.modules +++ b/ProjectFish/Binaries/Win64/UnrealEditor.modules @@ -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" } } \ No newline at end of file diff --git a/ProjectFish/Content/UI/Ready/BP_SkillDragOption.uasset b/ProjectFish/Content/UI/Ready/BP_SkillDragOption.uasset new file mode 100644 index 0000000..fa7ddfd Binary files /dev/null and b/ProjectFish/Content/UI/Ready/BP_SkillDragOption.uasset differ diff --git a/ProjectFish/Content/UI/Ready/UMG_FishingRodConfig.uasset b/ProjectFish/Content/UI/Ready/UMG_FishingRodConfig.uasset index 6d21886..2c383b2 100644 Binary files a/ProjectFish/Content/UI/Ready/UMG_FishingRodConfig.uasset and b/ProjectFish/Content/UI/Ready/UMG_FishingRodConfig.uasset differ diff --git a/ProjectFish/Content/UI/Ready/UMG_InventoryGridWidget.uasset b/ProjectFish/Content/UI/Ready/UMG_InventoryGridWidget.uasset index c0f217a..68bf643 100644 Binary files a/ProjectFish/Content/UI/Ready/UMG_InventoryGridWidget.uasset and b/ProjectFish/Content/UI/Ready/UMG_InventoryGridWidget.uasset differ diff --git a/ProjectFish/Content/UI/Ready/WBP_SkillIMoveable.uasset b/ProjectFish/Content/UI/Ready/WBP_SkillIMoveable.uasset new file mode 100644 index 0000000..727d0dc Binary files /dev/null and b/ProjectFish/Content/UI/Ready/WBP_SkillIMoveable.uasset differ diff --git a/ProjectFish/Content/UI/Ready/WBP_SkillIcon.uasset b/ProjectFish/Content/UI/Ready/WBP_SkillIcon.uasset index b414cbb..886f891 100644 Binary files a/ProjectFish/Content/UI/Ready/WBP_SkillIcon.uasset and b/ProjectFish/Content/UI/Ready/WBP_SkillIcon.uasset differ diff --git a/ProjectFish/Source/ProjectFish/DataAsset/BagConfigAsset.cpp b/ProjectFish/Source/ProjectFish/DataAsset/BagConfigAsset.cpp index ae125d8..b4c838d 100644 --- a/ProjectFish/Source/ProjectFish/DataAsset/BagConfigAsset.cpp +++ b/ProjectFish/Source/ProjectFish/DataAsset/BagConfigAsset.cpp @@ -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; // 无重叠 diff --git a/ProjectFish/Source/ProjectFish/DataAsset/BagConfigAsset.h b/ProjectFish/Source/ProjectFish/DataAsset/BagConfigAsset.h index bf5e514..acc4589 100644 --- a/ProjectFish/Source/ProjectFish/DataAsset/BagConfigAsset.h +++ b/ProjectFish/Source/ProjectFish/DataAsset/BagConfigAsset.h @@ -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;