diff --git a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish-0001.dll b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish-0001.dll new file mode 100644 index 0000000..1ac8f7d Binary files /dev/null and b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish-0001.dll differ diff --git a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish.dll b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish.dll index 913bd48..aa4df89 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 new file mode 100644 index 0000000..e2dba73 Binary files /dev/null and b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor-0001.dll differ diff --git a/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor.dll b/ProjectFish/Binaries/Win64/UnrealEditor-ProjectFishEditor.dll index c2657a7..dead020 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 22c08e6..fe900f8 100644 --- a/ProjectFish/Binaries/Win64/UnrealEditor.modules +++ b/ProjectFish/Binaries/Win64/UnrealEditor.modules @@ -2,7 +2,7 @@ "BuildId": "37670630", "Modules": { - "ProjectFish": "UnrealEditor-ProjectFish.dll", - "ProjectFishEditor": "UnrealEditor-ProjectFishEditor.dll" + "ProjectFish": "UnrealEditor-ProjectFish-0001.dll", + "ProjectFishEditor": "UnrealEditor-ProjectFishEditor-0001.dll" } } \ No newline at end of file diff --git a/ProjectFish/Source/ProjectFish/Skill/Skill.cpp b/ProjectFish/Source/ProjectFish/Skill/Skill.cpp index de843b8..fed6841 100644 --- a/ProjectFish/Source/ProjectFish/Skill/Skill.cpp +++ b/ProjectFish/Source/ProjectFish/Skill/Skill.cpp @@ -115,11 +115,16 @@ void USkill::InitSkillTrigger() bool USkill::SkillTickAble() { - //剩余次数无限制或者拥有者没有被韧性眩晕 - return (RemainingEndurance >0 || RemainingEndurance == -1 ) + //剩余次数无限制 或者 剩余次数大于0次并且拥有者没有被韧性眩晕 + return (RemainingEndurance == -1 || RemainingEndurance >= 0 ) && Owner->CurrentTenacity > 0 && SkillData->triggerType == ESkillTriggerType::ActiveSkill; } +bool USkill::SkillExecuteAble() +{ + return (RemainingEndurance == -1 || RemainingEndurance > 0 ) && RemainingTime <= 0; +} + FIntPoint USkill::GetSkillSize() { return GetSkillSizeValue(SkillData->SkillSize); @@ -128,21 +133,25 @@ FIntPoint USkill::GetSkillSize() void USkill::TickSkill(float deltaTime) { if (SkillTickAble()) + { RemainingTime -= deltaTime * SkillData->Speed; - if (RemainingTime <= 0 ) + RemainingTime = FMath::Max(RemainingTime, 0); + } + + if (SkillExecuteAble() ) { ExecuteSkill(); } - if (RemainingEndurance == 0) - { - FSkillContext context; - context.OwnerSkill = this; - context.SkillManager = SkillManager; - for (auto Effect: SkillEffects) - { - Effect->EffectEnded(context); - } - } + // if (RemainingEndurance == 0) + // { + // FSkillContext context; + // context.OwnerSkill = this; + // context.SkillManager = SkillManager; + // for (auto Effect: SkillEffects) + // { + // Effect->EffectEnded(context); + // } + // } } void USkill::ExecuteSkill() diff --git a/ProjectFish/Source/ProjectFish/Skill/Skill.h b/ProjectFish/Source/ProjectFish/Skill/Skill.h index cd63d08..2b2ded7 100644 --- a/ProjectFish/Source/ProjectFish/Skill/Skill.h +++ b/ProjectFish/Source/ProjectFish/Skill/Skill.h @@ -53,6 +53,9 @@ public: UFUNCTION(BlueprintPure) bool SkillTickAble(); + UFUNCTION(BlueprintPure) + bool SkillExecuteAble(); + UFUNCTION(BlueprintPure) FIntPoint GetSkillSize(); diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillEffect.cpp b/ProjectFish/Source/ProjectFish/Skill/SkillEffect.cpp index 5c9d935..5d2cae5 100644 --- a/ProjectFish/Source/ProjectFish/Skill/SkillEffect.cpp +++ b/ProjectFish/Source/ProjectFish/Skill/SkillEffect.cpp @@ -45,134 +45,11 @@ void USkillEffect::Cancel(const FSkillContext& context) { } -void USkillEffect::EffectEnded(const FSkillContext& context) -{ -} - -// TArray USkillEffect::GetApplyTargets(const FSkillContext& context) +// void USkillEffect::EffectEnded(const FSkillContext& context) // { -// TArray result; -// switch (effectData.SkillSelecter.SelecterType) -// { -// case EEffectTargetType::Target: -// { -// //目标是敌人 -// result.Add(context.SkillManager->GetEnemyPawn(OwnerSkill->GetOwner())); -// break;; -// } -// case EEffectTargetType::Self: -// { -// //目标是敌人 -// result.Add(OwnerSkill->GetOwner()); -// break;; -// } -// case EEffectTargetType::TargetSkill: -// { -// TArray Skills = context.SkillManager->GetSkillsByOwner(context.SkillManager->GetEnemyPawn(OwnerSkill->GetOwner())); -// if (effectData.SkillSelecter.bAll) -// { -// result.Append(Skills); -// } -// else -// { -// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num()); -// for (int i = 0; i < TargetNum; i++) -// { -// int randomIndex = FMath::RandRange(0, Skills.Num() - 1); -// result.Add(Skills[randomIndex]); -// Skills.RemoveAt(randomIndex); -// } -// } -// break;; -// } -// case EEffectTargetType::SelfSkill: -// { -// TArray Skills = context.SkillManager->GetSkillsByOwner(OwnerSkill->GetOwner()); -// if (effectData.SkillSelecter.bAll) -// { -// result.Append(Skills); -// } -// else -// { -// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num()); -// for (int i = 0; i < TargetNum; i++) -// { -// int randomIndex = FMath::RandRange(0, Skills.Num() - 1); -// result.Add(Skills[randomIndex]); -// Skills.RemoveAt(randomIndex); -// } -// } -// break;; -// } -// case EEffectTargetType::AroundSkill: -// { -// TArray aroundSkills = context.SkillManager->GetSkillsAround(context.OwnerSkill); -// for (auto skill: aroundSkills) -// { -// result.Add(skill); -// } -// break; -// } -// case EEffectTargetType::SelfSkillType: -// { -// //筛选指定类型的技能 -// TArray Skills = context.SkillManager->GetSkillsByOwner(OwnerSkill->GetOwner()); -// for (int i = Skills.Num() - 1; i >= 0; i--) -// { -// if (!Skills[i]->GetSkillData()->SkillTypes.Contains(effectData.SkillSelecter.SkillType)) -// { -// Skills.RemoveAt(i); -// } -// } -// -// if (effectData.SkillSelecter.bAll) -// { -// result.Append(Skills); -// } -// else -// { -// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num()); -// for (int i = 0; i < TargetNum; i++) -// { -// int randomIndex = FMath::RandRange(0, Skills.Num() - 1); -// result.Add(Skills[randomIndex]); -// Skills.RemoveAt(randomIndex); -// } -// } -// break; -// } -// case EEffectTargetType::TargetSkillType: -// { -// //筛选指定类型的技能 -// TArray Skills = context.SkillManager->GetSkillsByOwner(context.SkillManager->GetEnemyPawn(OwnerSkill->GetOwner())); -// for (int i = Skills.Num() - 1; i >= 0; i--) -// { -// if (!Skills[i]->GetSkillData()->SkillTypes.Contains(effectData.SkillSelecter.SkillType)) -// { -// Skills.RemoveAt(i); -// } -// } -// -// if (effectData.SkillSelecter.bAll) -// { -// result.Append(Skills); -// } -// else -// { -// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num()); -// for (int i = 0; i < TargetNum; i++) -// { -// int randomIndex = FMath::RandRange(0, Skills.Num() - 1); -// result.Add(Skills[randomIndex]); -// Skills.RemoveAt(randomIndex); -// } -// } -// break; -// } -// } -// return result; // } + FString USkillEffect::GetSkillEffectDes() { return FString(); diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillEffect.h b/ProjectFish/Source/ProjectFish/Skill/SkillEffect.h index a4c62ce..ae3062a 100644 --- a/ProjectFish/Source/ProjectFish/Skill/SkillEffect.h +++ b/ProjectFish/Source/ProjectFish/Skill/SkillEffect.h @@ -20,7 +20,7 @@ public: void InitSkillEffect(class USkill* skill, FSkillEffectData data); virtual void Execute(const FSkillContext& context) ; virtual void Cancel(const FSkillContext& context) ; - virtual void EffectEnded(const FSkillContext& context); + //virtual void EffectEnded(const FSkillContext& context); //TArray GetApplyTargets(const FSkillContext& context); UFUNCTION(BlueprintPure) diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_DamageReduce.cpp b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_DamageReduce.cpp index f118c6b..634b7d8 100644 --- a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_DamageReduce.cpp +++ b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_DamageReduce.cpp @@ -24,24 +24,24 @@ void USkillEffect_DamageReduce::Execute(const FSkillContext& context) } } -void USkillEffect_DamageReduce::EffectEnded(const FSkillContext& context) -{ - Super::EffectEnded(context); - TArray targets = context.SkillManager->GetTargetsBySelector(context.OwnerSkill, effectData.SkillSelecter); - for (auto target: targets) - { - if (!target->GetClass()->IsChildOf(APawnWithSkill::StaticClass())) - { - UE_LOG(LogTemp, Error, TEXT("skill %s apply target is not a pawn "), *(OwnerSkill->GetSkillName())); - } - else - { - //恢复目标护盾值 - APawnWithSkill* OwnerPawn = Cast(target); - OwnerPawn->SetDamageReduce(0); - } - } -} +// void USkillEffect_DamageReduce::EffectEnded(const FSkillContext& context) +// { +// Super::EffectEnded(context); +// TArray targets = context.SkillManager->GetTargetsBySelector(context.OwnerSkill, effectData.SkillSelecter); +// for (auto target: targets) +// { +// if (!target->GetClass()->IsChildOf(APawnWithSkill::StaticClass())) +// { +// UE_LOG(LogTemp, Error, TEXT("skill %s apply target is not a pawn "), *(OwnerSkill->GetSkillName())); +// } +// else +// { +// //恢复目标护盾值 +// APawnWithSkill* OwnerPawn = Cast(target); +// OwnerPawn->SetDamageReduce(0); +// } +// } +// } FString USkillEffect_DamageReduce::GetSkillEffectDes() { diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_DamageReduce.h b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_DamageReduce.h index c05414c..9dbfa87 100644 --- a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_DamageReduce.h +++ b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_DamageReduce.h @@ -15,6 +15,6 @@ class PROJECTFISH_API USkillEffect_DamageReduce : public USkillEffect GENERATED_BODY() public: void Execute(const FSkillContext& context) override; - void EffectEnded(const FSkillContext& context) override; + //void EffectEnded(const FSkillContext& context) override; FString GetSkillEffectDes() override; }; diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_ModifySpeed.cpp b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_ModifySpeed.cpp index b8aeb4b..a4776ed 100644 --- a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_ModifySpeed.cpp +++ b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_ModifySpeed.cpp @@ -36,11 +36,11 @@ void USkillEffect_ModifySpeed::Execute(const FSkillContext& context) } } -void USkillEffect_ModifySpeed::EffectEnded(const FSkillContext& context) -{ - Super::EffectEnded(context); - //GetWorld()->GetTimerManager().ClearTimer(TimerHandle); -} +// void USkillEffect_ModifySpeed::EffectEnded(const FSkillContext& context) +// { +// Super::EffectEnded(context); +// //GetWorld()->GetTimerManager().ClearTimer(TimerHandle); +// } FString USkillEffect_ModifySpeed::GetSkillEffectDes() { diff --git a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_ModifySpeed.h b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_ModifySpeed.h index 1c84203..6d0abbb 100644 --- a/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_ModifySpeed.h +++ b/ProjectFish/Source/ProjectFish/Skill/SkillEffects/SkillEffect_ModifySpeed.h @@ -17,7 +17,7 @@ class PROJECTFISH_API USkillEffect_ModifySpeed : public USkillEffect GENERATED_BODY() public: void Execute(const FSkillContext& context) override; - void EffectEnded(const FSkillContext& context) override; + //void EffectEnded(const FSkillContext& context) override; FString GetSkillEffectDes() override; private: FTimerHandle TimerHandle;