diff --git a/ProjectFish/Content/Characters/BP_Dabaza_Pawn.uasset b/ProjectFish/Content/Characters/BP_Dabaza_Pawn.uasset index b7b30e3..7bca3b2 100644 Binary files a/ProjectFish/Content/Characters/BP_Dabaza_Pawn.uasset and b/ProjectFish/Content/Characters/BP_Dabaza_Pawn.uasset differ diff --git a/ProjectFish/Content/Characters/BP_PawnEntity.uasset b/ProjectFish/Content/Characters/BP_PawnEntity.uasset index c04ddfa..bca55ca 100644 Binary files a/ProjectFish/Content/Characters/BP_PawnEntity.uasset and b/ProjectFish/Content/Characters/BP_PawnEntity.uasset differ diff --git a/ProjectFish/Content/DataTable/FishRobs.uasset b/ProjectFish/Content/DataTable/FishRobs.uasset index d020e53..d3f6c74 100644 Binary files a/ProjectFish/Content/DataTable/FishRobs.uasset and b/ProjectFish/Content/DataTable/FishRobs.uasset differ diff --git a/ProjectFish/Content/FishingRodSkills/UFRS_TriggerBySKill.uasset b/ProjectFish/Content/FishingRodSkills/UFRS_TriggerBySKill.uasset new file mode 100644 index 0000000..ddb1650 Binary files /dev/null and b/ProjectFish/Content/FishingRodSkills/UFRS_TriggerBySKill.uasset differ diff --git a/ProjectFish/Content/__ExternalActors__/Maps/Dabaza/8/VO/DV1AKH9EUYVRMVYP3DYZVH.uasset b/ProjectFish/Content/__ExternalActors__/Maps/Dabaza/8/VO/DV1AKH9EUYVRMVYP3DYZVH.uasset index 9d855e9..bc1ba69 100644 Binary files a/ProjectFish/Content/__ExternalActors__/Maps/Dabaza/8/VO/DV1AKH9EUYVRMVYP3DYZVH.uasset and b/ProjectFish/Content/__ExternalActors__/Maps/Dabaza/8/VO/DV1AKH9EUYVRMVYP3DYZVH.uasset differ diff --git a/ProjectFish/Content/__ExternalActors__/Maps/Dabaza/9/GX/KCVNFI6L6PBCQ844W3A926.uasset b/ProjectFish/Content/__ExternalActors__/Maps/Dabaza/9/GX/KCVNFI6L6PBCQ844W3A926.uasset index 45bf434..4996d06 100644 Binary files a/ProjectFish/Content/__ExternalActors__/Maps/Dabaza/9/GX/KCVNFI6L6PBCQ844W3A926.uasset and b/ProjectFish/Content/__ExternalActors__/Maps/Dabaza/9/GX/KCVNFI6L6PBCQ844W3A926.uasset differ diff --git a/ProjectFish/Source/ProjectFish/Components/FishingRodComponent.cpp b/ProjectFish/Source/ProjectFish/Components/FishingRodComponent.cpp index de222d7..64d0214 100644 --- a/ProjectFish/Source/ProjectFish/Components/FishingRodComponent.cpp +++ b/ProjectFish/Source/ProjectFish/Components/FishingRodComponent.cpp @@ -53,7 +53,18 @@ void UFishingRobComponent::BeginPlay() Enemy = pawn; } } - }); + //初始化鱼竿技能 + for (auto skill : FishRob.Skills) + { + UFishingRodSKill_Base* SkillObject = NewObject(OwnerPawn, skill.SkillClass); + if (SkillObject != nullptr) + { + FRSkills.Add(SkillObject); + SkillObject->Init(OwnerPawn); + } + } + }); + } // ... diff --git a/ProjectFish/Source/ProjectFish/Components/FishingRodComponent.h b/ProjectFish/Source/ProjectFish/Components/FishingRodComponent.h index af6e965..1a155b5 100644 --- a/ProjectFish/Source/ProjectFish/Components/FishingRodComponent.h +++ b/ProjectFish/Source/ProjectFish/Components/FishingRodComponent.h @@ -5,6 +5,7 @@ #include "CoreMinimal.h" #include "Components/ActorComponent.h" #include "ProjectFish/Definations.h" +#include "ProjectFish/FishingRodSKill_Base.h" #include "FishingRodComponent.generated.h" @@ -33,4 +34,7 @@ public: FFishingRod FishRob; class APawnWithSkill* Enemy; float CurrentCDTime = 0.f; + + UPROPERTY(BlueprintReadOnly) + TArray FRSkills; }; diff --git a/ProjectFish/Source/ProjectFish/Definations.h b/ProjectFish/Source/ProjectFish/Definations.h index 9562236..f27c5f8 100644 --- a/ProjectFish/Source/ProjectFish/Definations.h +++ b/ProjectFish/Source/ProjectFish/Definations.h @@ -142,6 +142,7 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite) FName SkillRowName; + }; /** * @@ -161,8 +162,8 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "鱼竿技能名称")) FName SkillName; - UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (AllowedClasses = "Object", ToolTip = "技能图片")) - FSoftObjectPath SkillObject; + UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "鱼钩技能")) + TSubclassOf SkillClass; }; USTRUCT(BlueprintType) diff --git a/ProjectFish/Source/ProjectFish/FishingRodSKill_Base.cpp b/ProjectFish/Source/ProjectFish/FishingRodSKill_Base.cpp new file mode 100644 index 0000000..1a5c257 --- /dev/null +++ b/ProjectFish/Source/ProjectFish/FishingRodSKill_Base.cpp @@ -0,0 +1,8 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "FishingRodSKill_Base.h" + +UFishingRodSKill_Base::UFishingRodSKill_Base() +{ +} diff --git a/ProjectFish/Source/ProjectFish/FishingRodSKill_Base.h b/ProjectFish/Source/ProjectFish/FishingRodSKill_Base.h new file mode 100644 index 0000000..e22b3e0 --- /dev/null +++ b/ProjectFish/Source/ProjectFish/FishingRodSKill_Base.h @@ -0,0 +1,22 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Definations.h" +#include "UObject/Object.h" +#include "FishingRodSKill_Base.generated.h" + +/** + * + */ +UCLASS(Blueprintable) +class PROJECTFISH_API UFishingRodSKill_Base : public UObject +{ + GENERATED_BODY() +public: + UFishingRodSKill_Base(); + UFUNCTION(BlueprintImplementableEvent) + void Init(class APawnWithSkill* Owner); + +}; diff --git a/ProjectFish/Source/ProjectFish/Skill/Skill.cpp b/ProjectFish/Source/ProjectFish/Skill/Skill.cpp index 01a7401..4ce33a6 100644 --- a/ProjectFish/Source/ProjectFish/Skill/Skill.cpp +++ b/ProjectFish/Source/ProjectFish/Skill/Skill.cpp @@ -73,6 +73,7 @@ void USkill::TickSkill(float deltaTime) Effect->Execute(context); } RemainingTime = SkillData.CD; + OnSkillExecute.Broadcast(SkillData.SkillName.ToString()); } if (RemainingEndurance == 0) { diff --git a/ProjectFish/Source/ProjectFish/Skill/Skill.h b/ProjectFish/Source/ProjectFish/Skill/Skill.h index 45cbb96..517bd3a 100644 --- a/ProjectFish/Source/ProjectFish/Skill/Skill.h +++ b/ProjectFish/Source/ProjectFish/Skill/Skill.h @@ -10,7 +10,7 @@ #include "Skill.generated.h" DECLARE_DYNAMIC_MULTICAST_DELEGATE(FSkillUpdate); - +DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FSkillExecute, FString, SkillName ); /** * */ @@ -27,7 +27,8 @@ public: FSkillData& GetSkillData(); void SetSkillData( FSkillData SkillData); - void ApplyRemainingTimeOffset(int timeOffset); + UFUNCTION(BlueprintCallable) + void ApplyRemainingTimeOffset(int timeOffset); void ApplyRemainingRemainingEnduranceOffset(int Offset); UFUNCTION(BlueprintPure) @@ -35,6 +36,9 @@ public: protected: UPROPERTY(BlueprintAssignable) FSkillUpdate OnSkillUpdate; + UPROPERTY(BlueprintAssignable) + FSkillExecute OnSkillExecute; + UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果")) FSkillData SkillData; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果")) diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillManager.cpp b/ProjectFish/Source/ProjectFish/Skill/SkillManager.cpp index 1b8bef9..7639ee5 100644 --- a/ProjectFish/Source/ProjectFish/Skill/SkillManager.cpp +++ b/ProjectFish/Source/ProjectFish/Skill/SkillManager.cpp @@ -47,6 +47,17 @@ TArray USkillManager::GetAllPawns() return SkillPawns; } +TArray USkillManager::GetSkillsByOwner(APawnWithSkill* Pawn) +{ + TArray skills; + for (auto Skill : Skills) + { + if (Skill->GetOwner() == Pawn) + skills.Add(Skill); + } + return skills; +} + TArray< USkill*> USkillManager::GetAllSkills() { return Skills; diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillManager.h b/ProjectFish/Source/ProjectFish/Skill/SkillManager.h index 0f19f5a..5d40c37 100644 --- a/ProjectFish/Source/ProjectFish/Skill/SkillManager.h +++ b/ProjectFish/Source/ProjectFish/Skill/SkillManager.h @@ -32,7 +32,10 @@ public: UFUNCTION(BlueprintCallable) TArray GetAllPawns(); - UFUNCTION(BlueprintCallable) + UFUNCTION(BlueprintPure) + TArray GetSkillsByOwner(APawnWithSkill* Pawn); + + UFUNCTION(BlueprintPure) TArray GetAllSkills(); protected: UPROPERTY(BlueprintReadWrite)